【问题标题】:SAS combine 3 datasets and assign its corresponding dataset name [duplicate]SAS组合3个数据集并分配其相应的数据集名称[重复]
【发布时间】:2015-01-06 04:19:03
【问题描述】:

如图所示,我有 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


    【解决方案1】:

    如果您有 SAS 9.2 或更高版本,则可以使用 INDSNAME 选项 http://support.sas.com/kb/34/513.html

    data datacombine;
    format dsname datasetname $25.; 
      set dataA dataB dataC indsname=dsname;
      datasetname=dsname;
    run;
    

    【讨论】:

    • Joe 已经在其他帖子中很好地解释了它stackoverflow.com/questions/12144138/… 这将您的问题标记为重复!
    • 好点,我已作为重复关闭 - 以后也可以随意标记关闭(我认为您可以在代表级别做到这一点?)。
    【解决方案2】:

    我认为这是最标准的做法:

    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 会设置一个标志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 2018-04-05
      • 2015-06-15
      • 2020-12-10
      • 1970-01-01
      相关资源
      最近更新 更多