【问题标题】:Accessing one SAS data set from another从另一个访问一个 SAS 数据集
【发布时间】:2011-01-17 14:27:00
【问题描述】:

有一个相当棘手的 SAS 问题,我想寻求您的帮助。问题来了:

我有两个 SAS 数据集;我们称它们为 setA 和 setB。 setA 中的每一行都有多个属性,一个属性是数据集中唯一的键值。 setB 由两个属性组成。这些属性是来自 setA 的键值,表示 setA 中具有属性 1 键值的行是具有属性 2 键值的行的副本(重复项不包括键值)。

我需要删除 setA 中的所有重复行。

我对 SAS 比较陌生,我相信我使用的版本是 9.1。解决这个问题的最佳方法是什么?谢谢。

【问题讨论】:

    标签: sas


    【解决方案1】:

    我对你的问题的解释是,如果 setA 包含

    key   value
    1        67
    2         3
    3         4
    8        16
    9        16
    10        4
    

    和 setB 包含

    key1   key2
     8        9
    10        3
    

    那么你希望新的 setA 看起来像这样(因为 key=9 是 key=8 的副本 并且 key=10 是 key=3) 的欺骗:

    key   value
    1        67
    2         3
    3         4
    8        16
    

    如果我正确解释了您的问题,您可以使用此 SAS 代码:

    data dupes_to_remove (keep=larger_key rename=(larger_key=key));
      set setB;
      if key1 > key2 then larger_key = key1;
      else larger_key = key2;
      output;
    run;
    
    proc sort data=dupes_to_remove nodupkey;
      by key;
    run;
    
    data setA_new;
      merge setA dupes_to_remove (in=in_dupes);
      by key;
      if not in_dupes;
    run;
    

    (另请注意,SAS 中的常用术语是“变量”而不是“属性”。)

    【讨论】:

    • 先生,谢谢。正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2020-08-04
    • 1970-01-01
    • 2020-02-22
    • 2019-01-05
    相关资源
    最近更新 更多