Sas 如何以一种有效的方式连接多个列是一个问题

Sas 如何以一种有效的方式连接多个列是一个问题,sas,Sas,我的have表中有八列,我将两列与其他六列连接为 data case; set case; stage1_to = cats(stage1_to, ',' , email_to); stage1_cc = cats(stage1_cc, ',' , email_cc); stage2_to = cats(stage2_to, ',' , email_to); stage2_cc = cats(stage2_cc, ',' , email_cc); stage3_to = cats(stag

我的have表中有八列,我将两列与其他六列连接为

data case;
set case;

stage1_to = cats(stage1_to, ',' , email_to);
stage1_cc = cats(stage1_cc, ',' , email_cc);

stage2_to = cats(stage2_to, ',' , email_to);
stage2_cc = cats(stage2_cc, ',' , email_cc);

stage3_to = cats(stage3_to, ',' , email_to);
stage3_cc = cats(stage3_cc, ',' , email_cc);
run;
现在,作为阶段的一个基础,我向不同的用户发送不同的邮件

样本数据

email_to =  email@to.com
email_cc =  email@cc.com
stage1_to = stage1@to.com
stage1_cc = stage1@cc.com
stage2_to = stage2@to.com
stage2_cc = stage2@cc.com
stage3_to = stage3@to.com
stage3_cc = stage3@cc.com
我的代码将所有stage列与email\u to和email\u cc连接在一起

  • 如果缺少阶段的to或cc列,则将数据追加为
    ",email@to.com“和”,email@cc.com“然后系统抛出错误
    因为“,email@to.com“不是有效的电子邮件

  • 如果未提供电子邮件抄送,或电子邮件抄送和阶段抄送栏都提供,则相同
    没有数据,只会更新“,”或“stage2@cc.com," 这又是一封无效的电子邮件

请建议我一个解决所有这些错误的好方法。在前端,Email_to是必需的,所有其他字段都是可选的。我的主要目标是将stage专栏与email_to和email_cc结合起来

发送电子邮件至和发送电子邮件至抄送

目前我正在做这件事

data case_stage1_to_concatenate;
set case;

stage1_to = cats(stage1_to, ',' , email_to);
where stage1_to ne "" and email_to ne "";
run;

data case_stage1_to_update;
set case;

stage1_to = email_to;
where stage1_to eq "";
run;
我将为每个字段创建两个数据集,然后使用union将它们创建为一个数据集

请建议更好的方法

使用
CATX(“,”,thing1,thing2,…)

CATX
将使用分隔符连接,并以这样的方式处理缺少的值,即永远不会得到两个连续的分隔符,也不会得到一个前导分隔符或一个尾随分隔符