Объединение наборов данных SAS — только 1 переменная

#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;