#sas #dataset
#sas #набор данных
Вопрос:
Сценарий: мне нужно объединить два набора данных SAS в один и сохранить любые несовпадающие значения.
Набор данных содержит: CustomerID, HouseholdID, адрес электронной почты и т.д. DatasetB содержит: HouseholdID
DatasetA:
CustomerID HouseholdID EmailAddress ...
1001 100001 joe@aol.com
1002 100002 john@gmail.com
2003 100003 sally@comcast.net
DatasetB:
HouseholdID
100003
100001
Я хочу объединить эти два вместе, но, очевидно, если я сделаю это как есть, я потеряю DatasetB .
Для расширения DataSet содержит ВСЮ информацию о клиентах, а DatasetB содержит только определенные идентификаторы домохозяйств (не все из них). Я хочу создать таблицу, которая выглядит следующим образом, путем слияния. Итак, я думаю, мне нужно дублировать HouseholdID в DatasetB, но как я могу это сделать?
Desired Output (DatasetC)
CustomerID HouseholdID EmailAddress ... DatasetBHouseholdID
1001 100001 joe@aol.com 100001
1002 100002 john@gmail.com .
2003 100003 sally@comcast.net 100003
...
Я пытался сделать это:
data data.datasetc;
merge data.dataseta data.datasetb (RENAME=(householdID=datasetbhouseholdID));
by householdid;
run;
Но это, конечно, привело к ошибке (ПО переменной householdID отсутствует во входном наборе данных data.datasetb).
Я думаю, что лучший способ действий — сделать DatasetB похожим на это:
DatasetB:
HouseholdID DatasetBHouseholdID
100003 100003
100001 100001
Но как я могу это сделать?
Ответ №1:
Используйте параметр IN=
dataset.
data data.datasetc;
merge data.dataseta data.datasetb (in=inB);
by householdid;
if inB then datasetbhouseholdID=householdID;
run;