可以基于特定的公共變量合并多個(gè)SAS數(shù)據(jù)集以給出單個(gè)數(shù)據(jù)集。 這是使用MERGE語(yǔ)句和BY語(yǔ)句完成的。 合并數(shù)據(jù)集中的觀(guān)察的總數(shù)通常小于原始數(shù)據(jù)集中的觀(guān)察的數(shù)量的總和。 這是因?yàn)楫?dāng)公共變量的值存在匹配時(shí),變量形成兩個(gè)數(shù)據(jù)集合被合并為一個(gè)記錄。
下面給出了合并數(shù)據(jù)集的兩個(gè)先決條件:
SAS中的MERGE和BY語(yǔ)句的基本語(yǔ)法是:
MERGE Data-Set 1 Data-Set 2 BY Common Variable
以下是所使用的參數(shù)的說(shuō)明:
考慮兩個(gè)SAS數(shù)據(jù)集,一個(gè)包含具有名稱(chēng)和工資的雇員ID,另一個(gè)包含具有雇員ID和部門(mén)的雇員ID。 在這種情況下,為了獲得每個(gè)員工的完整信息,我們可以合并這兩個(gè)數(shù)據(jù)集。 最終數(shù)據(jù)集仍將對(duì)每個(gè)員工有一個(gè)觀(guān)察值,但它將包含薪水和部門(mén)變量。
# Data set 1 ID NAME SALARY 1 Rick 623.3 2 Dan 515.2 3 Mike 611.5 4 Ryan 729.1 5 Gary 843.25 6 Tusar 578.6 7 Pranab 632.8 8 Rasmi 722.5 # Data set 2 ID DEPT 1 IT 2 OPS 3 IT 4 HR 5 FIN 6 IT 7 OPS 8 FIN # Merged data set ID NAME SALARY DEPT 1 Rick 623.3 IT 2 Dan 515.2 OPS 3 Mike 611.5 IT 4 Ryan 729.1 HR 5 Gary 843.25 FIN 6 Tusar 578.6 IT 7 Pranab 632.8 OPS 8 Rasmi 722.5 FIN
上述結(jié)果通過(guò)使用以下代碼實(shí)現(xiàn),其中在BY語(yǔ)句中使用公共變量(ID)。 請(qǐng)注意,兩個(gè)數(shù)據(jù)集中的觀(guān)測(cè)值已在ID列中排序。
DATA SALARY; INPUT empid name $ salary ; DATALINES; 1 Rick 623.3 2 Dan 515.2 3 Mike 611.5 4 Ryan 729.1 5 Gary 843.25 6 Tusar 578.6 7 Pranab 632.8 8 Rasmi 722.5 ; RUN; DATA DEPT; INPUT empid dEPT $ ; DATALINES; 1 IT 2 OPS 3 IT 4 HR 5 FIN 6 IT 7 OPS 8 FIN ; RUN; DATA All_details; MERGE SALARY DEPT; BY (empid); RUN; PROC PRINT DATA=All_details; RUN;
可能存在公共變量的一些值在數(shù)據(jù)集之間不匹配的情況。 在這種情況下,數(shù)據(jù)集仍然會(huì)合并,但在結(jié)果中給出缺失值。
ID NAME SALARY DEPT 1 Rick 623.3 IT 2 Dan 515.2 OPS 3 . . IT 4 Ryan 729.1 HR 5 Gary 843.25 FIN 6 Tusar 578.6 . 7 Pranab 632.8 OPS 8 Rasmi 722.5 FIN
為了避免結(jié)果中的缺失值,我們可以考慮僅保留具有公共變量的匹配值的觀(guān)察值。 這是通過(guò)使用IN語(yǔ)句實(shí)現(xiàn)的。 SAS程序的merge語(yǔ)句需要更改。
在下面的示例中,IN =值僅保留來(lái)自數(shù)據(jù)集SALARY和DEPT的值匹配的觀(guān)察值。
DATA All_details; MERGE SALARY(IN=a) DEPT(IN=b); BY (empid); IF a=1 and b=1; RUN; PROC PRINT DATA=All_details; RUN;
在執(zhí)行具有上述改變的部分的SAS程序時(shí),我們得到以下輸出。
1 Rick 623.3 IT 2 Dan 515.2 OPS 4 Ryan 729.1 HR 5 Gary 843.25 FIN 7 Pranab 632.8 OPS 8 Rasmi 722.5 FIN
更多建議: