【问题标题】:Select observations using variables from a second data set使用第二个数据集中的变量选择观察值
【发布时间】:2014-11-27 17:11:24
【问题描述】:

我在 SAS 中有两个数据集。它们都包含相同的变量x。在第一个数据集中,我想删除那些x 值也在第二个数据集中的x 值中的观察。

例子,

data set1;
    input x y z;
    datalines;
    1 1.5 2.2
    1 2.1 9.0
    2 4.2 4.4
    3 4.5 2.4
    ;
run;

data set2;
    input x y;
    datalines;
    1 15
    2 44
    ;
run;

在第 1 组中,如果 x=1x=2 其中 1 和 2 来自第二个数据集的 x 值,我想删除这些观察结果。我只想保留第 1 组中的最后一行。

【问题讨论】:

    标签: sas dataset


    【解决方案1】:

    数据步版本:

    data want;
      merge set1(in = _1) 
            set2(in = _2 keep = x);
      by x;
      if _1 and not(_2);
    run;
    

    这假定 set1 和 set2 都已按 x 排序或在 x 上有索引。

    【讨论】:

      【解决方案2】:

      所以你的最终答案应该只包括 3?有几种方法,但我发现这是最清晰的理解方法。

      proc sql;
      create table want as
      select * 
      from set1
      where x not in (select x from set2);
      quit;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-03
        • 2015-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多