合并SAS数据集 - 仅1个变量

时间:2016-10-07 15:58:46

标签: sas dataset

场景:我需要将两个SAS数据集合并为一个并保持任何不匹配的值。

DatasetA包含:CustomerID,HouseholdID,EmailAddress等。 数据集B包含: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的追踪。

要扩展,DatasetA包含所有客户信息,而DatasetB仅包含某些HouseholdID(不是全部)。我想通过合并创建一个看起来像这样的表。所以,我想我需要在DatasetB中复制HouseholdID,但是我该怎么做呢?

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;

但是当然导致错误(BY变量householdID不在输入数据集data.datasetb上)。

我认为最好的做法是让DatasetB看起来像这样:

DatasetB:
HouseholdID     DatasetBHouseholdID
100003            100003
100001            100001

但我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

使用IN=数据集选项。

data data.datasetc;
  merge data.dataseta data.datasetb (in=inB);
  by householdid;
  if inB then datasetbhouseholdID=householdID;
run;