我需要合併兩個數據集。每個數據集都包含一個順序觀察編號。第一個數據集只包含第一個觀察值。第二個數據集包含所有後續的觀察結果。並非所有的科目都有相同的觀察次數。SAS/SQL:結合兩列同時保留其他列
問題如下。有兩種不同類型的主題。該類型僅包含在第一個數據集中。當我將兩個數據集合在一起時,所有觀測值中都缺少類型,但每個主題的類型都是第一個。請看下面的例子。
我想知道如何使用SQL和DATA步驟來完成此操作。我的真實數據集並不大,因此處理效率並不是一個主要問題。
我嘗試過使用RETAIN
,但由於第二個數據集不包含TYPE
變量,因此沒有值保留。關於SQL,似乎UNION
應該可以工作,並且在互聯網上有無數個UNION
的例子,但它們都涉及單個變量。我需要知道如何結合Observation
變量ID
,同時保留Amount
並指定Type
。
例
data set1;
input ID $
Observation
Type $
Amount
;
datalines;
002 1 A 15
026 1 A 30
031 1 B 7
028 1 B 10
036 1 A 22
;
run;
data set2;
input ID $
Observation
Amount
;
datalines;
002 2 11
002 3 35
002 4 13
002 5 12
026 2 21
026 3 12
026 4 40
031 2 11
028 2 27
036 2 10
036 3 15
036 4 16
036 5 12
036 6 20
;
run;
proc sort data = set1;
by ID
Observation
;
run;
proc sort data = set2;
by ID
Observation
;
run;
data merged;
merge set1
set2
;
by ID
Observation
;
run;
這給
ID Observation Type Amount
002 1 A 15
002 2 11
002 3 35
002 4 13
002 5 12
026 1 A 30
026 2 21
026 3 12
026 4 40
028 1 B 10
028 2 27
031 1 B 7
031 2 11
036 1 A 22
036 2 10
036 3 15
036 4 16
036 5 12
036 6 20
不過,我需要的是
ID Observation Type Amount
002 1 A 15
002 2 A 11
002 3 A 35
002 4 A 13
002 5 A 12
026 1 A 30
026 2 A 21
026 3 A 12
026 4 A 40
028 1 B 10
028 2 B 27
031 1 B 7
031 2 B 11
036 1 A 22
036 2 A 10
036 3 A 15
036 4 A 16
036 5 A 12
036 6 A 20
感謝您的編輯。我不清楚爲什麼合併是必要的,因爲選擇'a.id'或'b.id'產生相同的結果。這是我第一次遇到聚合,所以我可能錯過了一些東西。 –
通常在使用FULL JOIN時,您需要使用COALESCE(),因爲您不知道哪個參與表將缺少該ID的值。但是在這種情況下,別名B中的所有內容也都是別名A,因此您可以只使用A.ID。 – Tom