2010-02-16 9 views
1

имеет довольно неприятную проблему SAS, и я хотел бы попросить о вашей помощи. Вот проблема:Доступ к одному набору данных SAS от другого

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

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

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

ответ

5

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

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

и SETB содержит

key1 key2 
8  9 
10  3 

, то вы хотите, чтобы новый множество А выглядеть следующим образом (поскольку ключ = 9 является контратип ключ = 8 и ключ = 10 представляет собой контратип ключа = 3):

key value 
1  67 
2   3 
3   4 
8  16 

Если у меня есть интер preted ваш вопрос правильно, вы можете сделать это с помощью этого кода 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 является «переменной», а не «атрибут»)

+0

Сэр, спасибо. Именно то, что я искал. – ChamaraG

Смежные вопросы