从另一个访问一个SAS数据集

Cha*_*raG 1 sas

有一个相当棘手的SAS问题,我想请求你的帮助.这是问题所在:

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

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

我对SAS很新,我相信我使用的版本是9.1.解决这个问题的最佳方法是什么?谢谢.

Sim*_*son 5

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

key   value
1        67
2         3
3         4
8        16
9        16
10        4
Run Code Online (Sandbox Code Playgroud)

和setB包含

key1   key2
 8        9
10        3
Run Code Online (Sandbox Code Playgroud)

然后你希望新的setA看起来像这样(因为key = 9是key = 8的dupe而key = 10是key = 3的欺骗):

key   value
1        67
2         3
3         4
8        16
Run Code Online (Sandbox Code Playgroud)

如果我已正确解释您的问题,您可以使用此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;
Run Code Online (Sandbox Code Playgroud)

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