[SAS Syntax] Merge 데이터 합치기 (합집합과 교집합)


SAS MERGE: 합집합과 교집합

1️⃣ 합집합 (FULL JOIN 개념)

정의:
👉 두 데이터셋의 모든 key 값을 포함
👉 한쪽에만 있으면 다른 쪽 값은 결측치로 표시

SAS 코드:

data union_result;
    merge dataset1(in=a) dataset2(in=b);
    by keyvar;
run;
  • in= 옵션 없이도 기본적으로 FULL OUTER JOIN처럼 동작
  • keyvar 값이 어느 쪽에 있든 모두 결과에 포함
  • 해당 값이 없는 쪽은 . (결측치)로 나타남


2️⃣ 교집합 (INNER JOIN 개념)

정의:
👉 두 데이터셋에서 공통된 key 값만 포함

SAS 코드:

data intersect_result;
    merge dataset1(in=a) dataset2(in=b);
    by keyvar;
    if a and b;  /* 공통 key 만 포함 */
run;
  • in= 옵션으로 각 데이터셋의 존재 여부 확인
  • if a and b; → 양쪽에 모두 있는 key 값만 결과에 포함


🌟 비교 요약

종류 BY MERGE SQL JOIN 결과 key 값
합집합 merge ... by ...; FULL JOIN 두 데이터셋의 모든 key
교집합 merge ... if a and b; INNER JOIN 공통된 key 값만


⚠️ 주의사항

  • MERGE 사용 전에는 반드시 BY 변수로 정렬되어 있어야 합니다!
proc sort data=dataset1; by keyvar; run;
proc sort data=dataset2; by keyvar; run;

참고:
SQL JOIN은 정렬이 필요 없습니다.


0 댓글