SAS연습200제/SAS데이터셋활용하기

Q_02_14. 두 데이터셋을 옆으로 합치기 - IN 사용

sas 2025. 3. 18. 21:33

SAS에서 두 데이터셋을 옆으로 병합할 때 IN= 옵션을 사용하면 각 데이터셋에 해당하는 관측치가 존재하는지 여부를 확인할 수 있습니다. 이 방법은 특정 조건을 만족하는 행만 선택할 때 유용합니다.

IN= 옵션의 기본 사용법

IN= 옵션은 MERGE 문과 함께 사용되며, 각 데이터셋에서 관측치가 존재하는 경우 해당 IN= 변수의 값이 1로 설정됩니다. 이를 통해 조건을 적용해 원하는 데이터만 병합할 수 있습니다.

data merged_data;
    merge dataset1(in=in1) dataset2(in=in2);
    by key_variable;
    if in1 and in2; /* 두 데이터셋에 모두 존재하는 관측치만 선택 */
run;
  • in=in1: dataset1에 해당하는 관측치가 존재하면 in1이 1로 설정됩니다.
  • in=in2: dataset2에 해당하는 관측치가 존재하면 in2가 1로 설정됩니다.
  • if in1 and in2: 두 데이터셋에 모두 존재하는 관측치만 merged_data에 포함합니다.

예제 코드

예를 들어, 두 데이터셋 data1과 data2를 id 변수로 병합할 때 IN= 옵션을 사용해 조건을 적용하는 코드는 다음과 같습니다.

data data1;
    input id name $ score1;
    datalines;
    1 Alice 85
    2 Bob 90
    3 Charlie 88
    ;
run;

data data2;
    input id age score2;
    datalines;
    1 20 78
    2 21 82
    4 David 75
    ;
run;

proc sort data=data1;
    by id;
run;

proc sort data=data2;
    by id;
run;

data merged_data;
    merge data1(in=in1) data2(in=in2);
    by id;
    if in1 and in2; /* 두 데이터셋에 모두 존재하는 관측치만 포함 */
run;

결과 (merged_data 데이터셋)

 

merged_data 데이터셋에는 data1과 data2 모두에 존재하는 id 값(1과 2)만 포함됩니다.

idnamescore1agescore2

1 Alice 85 20 78
2 Bob 90 21 82

다양한 조건을 적용한 예제

  • 한쪽 데이터셋에만 존재하는 관측치 포함하기
data merged_data;
    merge data1(in=in1) data2(in=in2);
    by id;
    if in1 and not in2; /* data1에만 존재하는 관측치 포함 */
run;

이 코드는 data1에는 있고 data2에는 없는 관측치(즉, id=3)만 포함합니다.

  • 모든 관측치 포함하기 (Full Outer Join 효과)
data merged_data;
    merge data1(in=in1) data2(in=in2);
    by id;
run;

이 코드는 data1 또는 data2에 존재하는 모든 관측치를 포함하여 병합합니다. id=4와 같이 data2에만 있는 관측치도 포함됩니다.

요약

  • IN= 옵션은 각 데이터셋에서 관측치가 존재하는지 확인하는 플래그 역할을 합니다.
  • 다양한 조건(and, or, not 등)을 조합하여 특정 조건에 맞는 관측치만 선택하여 병합할 수 있습니다.
  • 이를 통해 데이터셋을 유연하게 병합하고 원하는 조건을 만족하는 결과만 포함할 수 있습니다.