合并 SAS 数据集 - 只有 1 个变量

Merging SAS Datasets - Only 1 Variable

场景:我需要将两个 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(不是全部)。我想通过合并创建一个看起来像这样的 table。所以,我想我需要在 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

但是我该怎么做呢?

使用 IN= 数据集选项。

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