场景:我需要将两个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
但我怎么能这样做?
答案 0 :(得分:0)
使用IN=
数据集选项。
data data.datasetc;
merge data.dataseta data.datasetb (in=inB);
by householdid;
if inB then datasetbhouseholdID=householdID;
run;