Sas: 병합 문에서 (in=a)를 사용하는 방법


SAS에서 두 데이터 세트를 병합할 때 IN 문을 사용하여 특정 데이터 세트에 값이 존재하는 행만 반환할 수 있습니다.

실제로 IN 문을 사용하는 몇 가지 일반적인 방법은 다음과 같습니다.

방법 1: 첫 번째 데이터 세트(in=a)에 값이 존재하는 행을 반환합니다.

 data final_data;
  merge data1 (in=a) data2;
  byID ;
  if a;
run ;

이 특정 예에서는 data1data2 라는 데이터 세트를 병합하고 data1 에 값이 있는 행만 반환합니다.

방법 2: 두 번째 데이터 세트(in=b)에 값이 존재하는 행을 반환합니다.

 data final_data;
  merge data1 data2 (in=b);
  byID ;
  if b;
run ;

이 특정 예에서는 data1data2 라는 데이터 세트를 병합하고 data2 에 값이 있는 행만 반환합니다.

방법 3: 데이터세트(in=a)와 (in=b) 모두에 값이 존재하는 행을 반환합니다.

 data final_data;
  merge data1(in=a) data2(in=b);
  byID ;
  if a and b;
run ;

이 특정 예에서는 data1data2 라는 데이터 세트를 병합하고 data1data2 모두 에 값이 존재하는 행만 반환합니다.

다음 예에서는 다음 두 데이터 세트에서 실제로 각 방법을 사용하는 방법을 보여줍니다.

 /*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에서 외부 조인을 수행하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다