2016-10-07 24 views
0

シナリオ:2つのSASデータセットを1つにまとめ、一致しない値を維持する必要があります。SASデータセットのマージ - 1変数のみ

DATASETAが含まれています:得意先、HouseholdID、EmailAddressの、など DatasetBは含まれていますHouseholdID

DatasetA: 
CustomerID  HouseholdID EmailAddress ... 
1001   100001   [email protected] 
1002   100002   [email protected] 
2003   100003   [email protected] 

DatasetB: 
HouseholdID 
100003 
100001   

は、私が一緒にこれらの2をマージしたいが、明らかに私がしなければそのまま、私はのトラックを失うことデータセットB。

展開すると、DatasetAにはすべての顧客情報が含まれ、DatasetBには特定のHouseholdIDのみが含まれます(すべてではありません)。私は、マージしてこのような表を作成したいと思います。ですから、DatasetBにHouseholdIDを複製する必要があると思いますが、どうすればいいですか?

Desired Output (DatasetC) 
CustomerID HouseholdID EmailAddress ... DatasetBHouseholdID 
1001   100001  [email protected]  100001 
1002   100002  [email protected] . 
2003   100003  [email protected] 100003 
... 

私はこれを実行しようとしました:

data data.datasetc; 
merge data.dataseta data.datasetb (RENAME=(householdID=datasetbhouseholdID)); 
by householdid; 
run; 

しかし、それは(変数householdIDすることにより、入力データセットdata.datasetbではありません)もちろん、エラーが発生しました。

DatasetB: 
HouseholdID  DatasetBHouseholdID 
100003   100003 
100001   100001 

しかし、私はそれをどのように行うことができます。

私は最善の行動はDatasetBはこのように見えるようにすることであると思いますか?

答えて

0

IN=データセットオプションを使用してください。

data data.datasetc; 
    merge data.dataseta data.datasetb (in=inB); 
    by householdid; 
    if inB then datasetbhouseholdID=householdID; 
run; 
関連する問題