我正在尝试在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个表堆叠,我正在寻找一种有效的方法来实现这一点.)
Joe*_*Joe 31
如果您使用的是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;
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)