我试图在SAS来连接多个数据集,和我正在寻找一种方式来存储有关最终堆叠数据集个人数据集名称的信息。
对于如。 初始数据集“my_data_1”,“ABC”和“XYZ”,每个列“VAR_1”和“VAR_2”。
我想用列“VAR_1”“最后”的数据集,“VAR_2”和“VAR_3”结束了。 其中“VAR_3”包含的值“my_data_1”,“ABC”和“XYZ”,取决于从哪个数据集中的特定行来了。
(我有这样做的,即增加一个表名作为所有个人数据集的额外变量cludgy的解决方案。不过,我有大约100个表就堆叠起来,我在寻找一种有效的方式来做到这一点。)
使用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;
如果你有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;
文章来源: SAS: concatenate different datasets while keeping the individual data table names