我正在尝试在SAS中连接多个数据集,我正在寻找一种在最终堆叠数据集中存储有关各个数据集名称的信息的方法。
例如。初始数据集为“my_data_1”,“abc”和“xyz”,每个都包含列'var_1'和'var_2'。
我希望最终得到包含“var_1”,“var_2”和“var_3”列的“最终”数据集。其中'var_3'包含值“my_data_1”,“abc”或“xyz”,具体取决于特定行来自哪个数据集。
(我有一个很好的解决方案,即在所有单个数据集中添加表名作为额外变量。但我有大约100个表堆叠,我正在寻找一种有效的方法来执行此操作。)
答案 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;