Sas: 병합 문에서 (in=a)를 사용하는 방법
SAS에서 두 데이터 세트를 병합할 때 IN 문을 사용하여 특정 데이터 세트에 값이 존재하는 행만 반환할 수 있습니다.
실제로 IN 문을 사용하는 몇 가지 일반적인 방법은 다음과 같습니다.
방법 1: 첫 번째 데이터 세트(in=a)에 값이 존재하는 행을 반환합니다.
data final_data;
merge data1 (in=a) data2;
byID ;
if a;
run ;
이 특정 예에서는 data1 및 data2 라는 데이터 세트를 병합하고 data1 에 값이 있는 행만 반환합니다.
방법 2: 두 번째 데이터 세트(in=b)에 값이 존재하는 행을 반환합니다.
data final_data;
merge data1 data2 (in=b);
byID ;
if b;
run ;
이 특정 예에서는 data1 및 data2 라는 데이터 세트를 병합하고 data2 에 값이 있는 행만 반환합니다.
방법 3: 데이터세트(in=a)와 (in=b) 모두에 값이 존재하는 행을 반환합니다.
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and b;
run ;
이 특정 예에서는 data1 및 data2 라는 데이터 세트를 병합하고 data1 및 data2 모두 에 값이 존재하는 행만 반환합니다.
다음 예에서는 다음 두 데이터 세트에서 실제로 각 방법을 사용하는 방법을 보여줍니다.
/*create first dataset*/
data data1;
inputIDGender $;
datalines ;
1 Male
2 Male
3 Female
4 Male
5 Female
;
run ;
title "data1";
proc print data = data1;
/*create second dataset*/
data data2;
input IDSales;
datalines ;
1 22
2 15
4 29
6 31
7 20
8 13
;
run ;
title "data2";
proc print data = data2;
예시 1: 모든 행 반환
IN 문 없이 다음 병합 문을 사용하여 ID 열 값을 기준으로 두 데이터세트를 병합하고 두 데이터세트의 모든 행을 반환할 수 있습니다.
/*perform merge*/
data final_data;
merge data1 data2;
byID ;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
두 데이터세트에 존재하지 않는 ID 값으로 인해 값이 누락된 경우에도 두 데이터세트의 모든 행이 반환된다는 점에 유의하세요.
예 2: 첫 번째 데이터 세트(in = a)에 값이 있는 행 반환
(in=a) 와 함께 다음 병합 문을 사용하여 ID 열의 값을 기반으로 두 데이터세트를 병합하고 첫 번째 데이터세트에 값이 존재하는 행만 반환할 수 있습니다.
/*perform merge*/
data final_data;
merge data1 (in = a) data2;
byID ;
if a;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
첫 번째 데이터 세트에 값이 존재하는 행만 반환됩니다.
예시 3: 두 번째 데이터 세트(in=b)에 값이 존재하는 행 반환
(in=b) 와 함께 다음 병합 문을 사용하여 ID 열의 값을 기반으로 두 데이터세트를 병합하고 두 번째 데이터세트에 값이 존재하는 행만 반환할 수 있습니다.
/*perform merge*/
data final_data;
merge data1 data2(in=b);
byID ;
if b;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
두 번째 데이터 세트에 값이 존재하는 행만 반환됩니다.
예시 4: 두 데이터세트(in = a) 및 (in = b) 모두에 값이 존재하는 행 반환
(in=a) 및 (in=b) 와 함께 다음 병합 문을 사용하여 ID 열의 값을 기반으로 두 데이터 세트를 병합하고 두 데이터 세트 모두에 값이 존재하는 행만 반환할 수 있습니다.
/*perform merge*/
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and b;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
두 데이터 세트 모두에 값이 존재하는 행만 반환됩니다.
참고 : 여기에서 SAS 병합 문에 대한 전체 문서를 찾을 수 있습니다.
추가 리소스
다음 튜토리얼에서는 SAS에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.
SAS에서 왼쪽 조인을 수행하는 방법
SAS에서 내부 조인을 수행하는 방법
SAS에서 외부 조인을 수행하는 방법