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

SAS:连接不同的数据集,同时保留单个数据表名称,sas,Sas,我正在尝试在SAS中连接多个数据集,并且正在寻找一种在最终的堆叠数据集中存储有关单个数据集名称的信息的方法 例如,初始数据集是“my_data_1”、“abc”和“xyz”,每个数据集都有“var_1”和“var_2”列 我想以“final”数据集结束,其中包含“var_1”、“var_2”和“var_3”列。其中“var_3”包含值“my_data_1”、“abc”或“xyz”,具体取决于特定行来自哪个数据集 (我有一个笨拙的解决方案,即在所有单独的数据集中添加表名作为额外变量。但我有大约10

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

例如,初始数据集是“my_data_1”、“abc”和“xyz”,每个数据集都有“var_1”和“var_2”列

我想以“final”数据集结束,其中包含“var_1”、“var_2”和“var_3”列。其中“var_3”包含值“my_data_1”、“abc”或“xyz”,具体取决于特定行来自哪个数据集


(我有一个笨拙的解决方案,即在所有单独的数据集中添加表名作为额外变量。但我有大约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

因此:


哇-这太棒了,我不知道他们加了这个选项!我会一直用这个。。。
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;