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 댓글