【问题标题】:SAS: concatenate different datasets while keeping the individual data table namesSAS:连接不同的数据集,同时保留单独的数据表名称
【发布时间】:2012-08-22 01:38:32
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: sas


    【解决方案1】:

    如果您有 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;
    

    【讨论】:

    • 哇——太棒了,我不知道他们添加了那个选项!我会一直用这个...
    【解决方案2】:

    设置每个数据集时使用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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      • 2012-09-20
      相关资源
      最近更新 更多