首页 > 解决方案 > 如何以有效的方式连接多列是sas

问题描述

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

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

我的代码将所有阶段列与 email_to 和 email_cc 连接起来。

请建议我解决所有这些错误的好方法。在前端,Email_to 是强制性的,所有其他字段都是可选的。我的主要目标是将阶段列与 email_to 和 email_cc 结合起来。

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;

我正在为每个字段创建两个数据集,然后将它们合并为一个集合。

请提出更好的方法

标签: sas

解决方案


利用CATX(",", thing1, thing2,...)

CATX将与分隔符连接,并以永远不会获得两个连续分隔符或仅前导或仅尾随分隔符的方式处理缺失值。


推荐阅读