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 등)을 조합하여 특정 조건에 맞는 관측치만 선택하여 병합할 수 있습니다.
- 이를 통해 데이터셋을 유연하게 병합하고 원하는 조건을 만족하는 결과만 포함할 수 있습니다.