13

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

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

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

(我有一个笨拙的解决方案,即在所有单独的数据集中添加表名作为额外变量。但我有大约 100 个表要堆叠,我正在寻找一种有效的方法来做到这一点。)

4

2 回答 2

34

如果您有 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;
于 2012-08-28T14:23:25.403 回答
10

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;
于 2012-08-27T14:49:10.610 回答