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

从一个SAS数据集访问另一个SAS数据集,sas,Sas,我有一个相当麻烦的SAS问题,我想请你帮助。问题是: 我有两个SAS数据集;让我们称之为setA和setB。setA中的每一行都有多个属性,其中一个属性是数据集中唯一的键值。setB由两个属性组成。这些属性是setA中的键值,表示setA中具有属性1键值的行是具有属性2键值的行的重复(不包括键值的重复) 我需要删除setA中所有重复的行 我是SAS的新手,我相信我使用的版本是9.1。解决这个问题的最好办法是什么?谢谢。我对你问题的解释是,如果setA包含 key value 1

我有一个相当麻烦的SAS问题,我想请你帮助。问题是:

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

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


我是SAS的新手,我相信我使用的版本是9.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的一个副本):

如果我正确解释了您的问题,您可以使用以下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中的常用术语是“变量”而不是“属性”。

我对你问题的解释是,如果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的一个副本):

如果我正确解释了您的问题,您可以使用以下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中常用的术语是“变量”而不是“属性”。

先生,谢谢。正是我想要的。先生,谢谢。正是我想要的。