У меня довольно упрощенный вопрос.Слияние наборов данных в SAS
Есть ли способ слияния наборов данных $ n $ в SAS, где $ n > 2 $. Я знаю, как объединить 2 набора данных.
Благодарности
Гауэрс
У меня довольно упрощенный вопрос.Слияние наборов данных в SAS
Есть ли способ слияния наборов данных $ n $ в SAS, где $ n > 2 $. Я знаю, как объединить 2 набора данных.
Благодарности
Гауэрс
Вы можете объединить несколько наборов данных, используя тот же синтаксис, как и для всего два:
data all;
merge ds1 ds2 ds3 ...;
by some_list_of_variables;
run;
Если у вас есть много наборов данных, который вы хотите объединить, вы может захотеть выбрать макрос, в котором перечислены все.
В дополнение к предоставленному коду @itzy вы можете идентифицировать свои наборы данных, используя параметр IN = в операторе MERGE. Это позволяет принять только соответствующее вам совпадение. Кроме того, у вас должны быть общие имена переменных для использования в вашем операторе BY. Вы можете включить оператор RENAME = для создания общей переменной для использования в вашем операторе BY.
(Непроверенные код)
data all;
merge ds1(in=one rename=(ds1_id=id))
ds2(in=two rename=(ds2_id=id))
ds3(in=three rename=(ds3_id=id))
;
by some_list_of_variables;
if one and two and three ; /* Creates only matching records from all */
run;
Даже если вы сказали, что вы хотите, чтобы «слить» наборы данных, обратите внимание, что оператор MERGE не единственный вариант. Если ваш ключ слияния имеет дубликаты в более чем 1 наборе данных, то использование оператора MERGE может привести к логически неправильным результатам, даже если оно будет работать без жалоб. В этом случае вы можете использовать PROC SQL - я также помню, что PROC SQL может быть более эффективным с SAS 9.1 и далее.
Пример -
proc sql;
select <fieldlist>
from data1 t1, data2 t2, data3 t3, data4 t4
where <join condition>;
quit;