Доступ к одному набору данных SAS из другого - PullRequest
1 голос
/ 17 февраля 2010

У меня довольно неприятная проблема с SAS, и я хотел бы попросить вас о помощи. Вот проблема:

У меня есть два набора данных SAS; давайте назовем их setA и setB. Каждая строка в setA имеет несколько атрибутов, и один атрибут является ключевым значением, уникальным для набора данных. setB состоит из двух атрибутов. Эти атрибуты являются ключевыми значениями из setA и указывают, что строка в setA со значением ключа атрибута 1 является дубликатом строки со значением ключа атрибута 2 (дубликат, исключая значение ключа).

Мне нужно удалить все дублирующиеся строки в setA.

Я довольно новичок в SAS и считаю, что я использую версию 9.1. Как лучше всего решить эту проблему? спасибо.

1 Ответ

5 голосов
/ 17 февраля 2010

Моя интерпретация вашего вопроса такова, что если setA содержит

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

и setB содержит

key1   key2
 8        9
10        3

тогда вы хотите, чтобы новый setA выглядел следующим образом (потому что ключ = 9 - это дублирование ключа = 8 и ключ = 10 является дублированием ключа = 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 - это «переменная», а не «атрибут».)

...