SAS合并3个数据集并分配其对应的数据集名称
SAS combine 3 datasets and assign its corresponding dataset name
我有 3 个数据集,如图所示:
data dataA;
input id;
datalines;
1001
1002
1003
;
run;
data dataB;
input id;
datalines;
1001
1002
1003
;
run;
data dataC;
input id;
datalines;
1001
1002
1003
;
run;
我想要输出:
1001 dataA
1002 dataA
1003 dataA
1001 dataB
1002 dataB
1003 dataB
1001 dataC
1002 dataC
1003 dataC
我知道如何使用
组合三个数据集
data datacombine;
set dataA dataB dataC;
run;
如果您有 SAS 9.2 或更新版本,那么您可以使用 INDSNAME
选项 http://support.sas.com/kb/34/513.html
data datacombine;
format dsname datasetname .;
set dataA dataB dataC indsname=dsname;
datasetname=dsname;
run;
我认为这是最标准的做法:
data datacombine;
set dataA(in=A) dataB(in=B) dataC(in=C);
if A then origin = "dataA";
else if B then origin = "dataB";
else if C then origin = "dataC";
run;
如果行来自相应的输入数据集,in= dataset option 设置一个标志。
我有 3 个数据集,如图所示:
data dataA;
input id;
datalines;
1001
1002
1003
;
run;
data dataB;
input id;
datalines;
1001
1002
1003
;
run;
data dataC;
input id;
datalines;
1001
1002
1003
;
run;
我想要输出:
1001 dataA
1002 dataA
1003 dataA
1001 dataB
1002 dataB
1003 dataB
1001 dataC
1002 dataC
1003 dataC
我知道如何使用
组合三个数据集data datacombine;
set dataA dataB dataC;
run;
如果您有 SAS 9.2 或更新版本,那么您可以使用 INDSNAME
选项 http://support.sas.com/kb/34/513.html
data datacombine;
format dsname datasetname .;
set dataA dataB dataC indsname=dsname;
datasetname=dsname;
run;
我认为这是最标准的做法:
data datacombine;
set dataA(in=A) dataB(in=B) dataC(in=C);
if A then origin = "dataA";
else if B then origin = "dataB";
else if C then origin = "dataC";
run;
如果行来自相应的输入数据集,in= dataset option 设置一个标志。