SAS:连接不同的数据集,同时保留各个数据表名称

时间:2012-08-27 14:37:24

标签: sas

我正在尝试在SAS中连接多个数据集,我正在寻找一种在最终堆叠数据集中存储有关各个数据集名称的信息的方法。

例如。初始数据集为“my_data_1”,“abc”和“xyz”,每个都包含列'var_1'和'var_2'。

我希望最终得到包含“var_1”,“var_2”和“var_3”列的“最终”数据集。其中'var_3'包含值“my_data_1”,“abc”或“xyz”,具体取决于特定行来自哪个数据集。

(我有一个很好的解决方案,即在所有单个数据集中添加表名作为额外变量。但我有大约100个表堆叠,我正在寻找一种有效的方法来执行此操作。)

2 个答案:

答案 0 :(得分:30)

如果您使用SAS 9.2或更新版本,则可以使用INDSNAME选项 http://support.sas.com/kb/34/513.html

所以:

data final;
format dsname datasetname $20.; *something equal to or longer than the longest dataset name including the library and dot;
set my_data_1 abc xyc indsname=dsname;
datasetname=dsname;
run;

答案 1 :(得分:8)

设置每个数据集时使用in语句:

data final;
 set my_data_1(in=a) abc(in=b) xyc(in=c);
 if a then var_3='my_data_1';
 if b then var_3='abc';
 if c then var_3='xyz';
run;