< Q_02_13. 두 데이터셋을 옆으로 합치기(1) -MERGE/BY 문 사용
본문 바로가기
SAS연습200제/SAS데이터셋활용하기

Q_02_13. 두 데이터셋을 옆으로 합치기(1) -MERGE/BY 문 사용

by sas 2025. 3. 18.

SAS에서 두 데이터셋을 옆으로 합칠 때 MERGE와 BY 문을 함께 사용하면 공통 키 변수를 기준으로 데이터를 병합할 수 있습니다. MERGE 문은 가로 방향으로 데이터를 결합하여 두 데이터셋의 열을 병합하고, BY 문은 지정한 키 변수를 기준으로 정렬하여 병합 과정을 제어합니다.

기본 구문

data merged_data;
    merge dataset1 dataset2;
    by key_variable;
run;
  • dataset1과 dataset2: 병합할 두 데이터셋입니다.
  • key_variable: 두 데이터셋을 병합할 때 사용할 공통 변수(키)입니다. 이 변수는 두 데이터셋 모두에 존재해야 하며, 사전에 정렬되어 있어야 합니다.
  • merged_data: 병합된 결과를 저장할 새로운 데이터셋입니다.

예제 코드

아래는 두 데이터셋 data1과 data2를 id 변수를 기준으로 병합하는 예제입니다.

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
    3 22 79
    ;
run;

proc sort data=data1;
    by id;
run;

proc sort data=data2;
    by id;
run;

data merged_data;
    merge data1 data2;
    by id;
run;

설명

 
  • proc sort: data1과 data2 데이터셋을 id 변수 기준으로 사전에 정렬합니다. BY 문을 사용하기 위해서는 데이터셋이 키 변수로 정렬되어 있어야 합니다.
  • merge 문: data1과 data2를 id 변수 기준으로 옆으로 병합합니다.
  • by 문: id 값을 기준으로 두 데이터셋의 행이 결합됩니다.

병합 결과 (merged_data)

병합된 merged_data 데이터셋은 아래와 같습니다.

idnamescore1agescore2
1 Alice 85 20 78
2 Bob 90 21 82
3 Charlie 88 22 79

주의사항

  • 정렬 필요성: MERGE와 BY 문을 사용할 때는 반드시 키 변수로 데이터셋을 정렬해야 합니다.
  • 공통 변수 존재: BY 변수는 두 데이터셋에 모두 존재해야 하며, 같은 이름이어야 합니다.
  • 누락 값 처리: 한쪽 데이터셋에만 있는 변수의 값은 병합 시 누락(.)으로 표시됩니다.

MERGE와 BY 문을 사용하면 두 데이터셋을 효율적으로 결합하고, 필요한 정보들을 한 데이터셋에 모아 분석에 활용할 수 있습니다.