SAS - Hợp nhất các tập dữ liệu

Nhiều tập dữ liệu SAS có thể được hợp nhất dựa trên một biến chung cụ thể để tạo ra một tập dữ liệu duy nhất. Điều này được thực hiện bằng cách sử dụngMERGE tuyên bố và BYtuyên bố. Tổng số quan sát trong tập dữ liệu được hợp nhất thường nhỏ hơn tổng số quan sát trong tập dữ liệu ban đầu. Đó là bởi vì các biến tạo thành cả hai tập dữ liệu được hợp nhất thành một bản ghi dựa trên giá trị của biến chung.

Có hai điều kiện tiên quyết để hợp nhất các tập dữ liệu được đưa ra dưới đây:

  • tập dữ liệu đầu vào phải có ít nhất một biến chung để hợp nhất.
  • các tập dữ liệu đầu vào phải được sắp xếp theo (các) biến chung sẽ được sử dụng để hợp nhất.

Cú pháp

Cú pháp cơ bản cho câu lệnh MERGE và BY trong SAS là:

MERGE Data-Set 1 Data-Set 2
BY Common Variable

Sau đây là mô tả về các tham số được sử dụng:

  • Data-set1,Data-set2 là các tên tập dữ liệu được viết nối tiếp nhau.

  • Common Variable là biến dựa trên các giá trị phù hợp mà các tập dữ liệu sẽ được hợp nhất.

Hợp nhất dữ liệu

Hãy để chúng tôi hiểu việc hợp nhất dữ liệu với sự trợ giúp của một ví dụ.

Thí dụ

Hãy xem xét hai bộ dữ liệu SAS, một bộ chứa ID nhân viên với tên và tiền lương và một bộ khác chứa ID nhân viên với ID nhân viên và bộ phận. Trong trường hợp này để có thông tin đầy đủ cho từng nhân viên, chúng ta có thể hợp nhất hai tập dữ liệu này. Tập dữ liệu cuối cùng sẽ vẫn có một quan sát cho mỗi nhân viên nhưng nó sẽ chứa cả biến tiền lương và biến bộ phậ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

Kết quả trên đạt được bằng cách sử dụng đoạn mã sau, trong đó biến chung (ID) được sử dụng trong câu lệnh BY. Xin lưu ý rằng các quan sát trong cả hai tập dữ liệu đã được sắp xếp trong cột 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;

Thiếu giá trị trong cột phù hợp

Có thể có trường hợp một số giá trị của biến chung sẽ không khớp giữa các tập dữ liệu. Trong những trường hợp như vậy, các tập dữ liệu vẫn được hợp nhất nhưng cung cấp các giá trị bị thiếu trong kết quả.

Thí dụ

Hãy xem xét trường hợp ID nhân viên 3 bị thiếu trong tập dữ liệu lương và ID nhân viên 6 bị thiếu tập dữ liệu biểu mẫu DEPT. Khi mã trên được áp dụng, chúng tôi nhận được kết quả bên dưới.

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

Chỉ hợp nhất các Kết quả phù hợp

Để tránh các giá trị bị thiếu trong kết quả, chúng ta có thể xem xét chỉ giữ lại các quan sát có giá trị phù hợp cho biến chung. Điều đó đạt được bằng cách sử dụngINtuyên bố. Câu lệnh hợp nhất của chương trình SAS cần được thay đổi.

Thí dụ

Trong ví dụ dưới đây, IN= value chỉ giữ lại các quan sát trong đó các giá trị từ cả hai tập dữ liệu SALARYDEPT trận đấu.

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;

Khi thực hiện chương trình SAS ở trên với phần đã thay đổi ở trên, chúng ta nhận được kết quả sau.

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