반응형
SAS에서 데이터를 처리하는 방식은 크게 두 가지로 나뉘어!
1️⃣ DATA STEP (DATA, MERGE, SET, IF-THEN, PROC SORT 등)
2️⃣ PROC SQL (SELECT, JOIN, WHERE, GROUP BY 등)
이 두 가지 방법은 같은 작업을 수행할 수도 있지만, 동작 방식과 문법이 다르다!
어떤 상황에서 어떤 방법을 쓰는 게 좋은지도 함께 알려줄게. 😊
📌 1. DATA STEP (기본 SAS 방식)
- SAS의 고유한 문법을 사용해서 데이터를 변환하고 처리하는 방법
- 행(Row) 단위로 데이터를 읽고 처리 (한 번에 한 개의 행을 처리)
- 반복문 (DO LOOP), MERGE, SET 등을 사용하여 데이터 조작 가능
📌 2. PROC SQL (SQL 방식)
- SAS에서 SQL 문법을 그대로 사용할 수 있도록 지원하는 기능
- SELECT, WHERE, JOIN, GROUP BY 같은 SQL 문법을 활용
- 데이터 정리와 병합(Join)이 간편함
📌 3. MERGE vs. JOIN (데이터 병합 차이)
데이터를 합칠 때 DATA STEP (MERGE)와 PROC SQL (JOIN) 방식의 차이점을 비교해볼게.
✅ 예제 3: MERGE 방식
DATA MergedData;
MERGE Dataset1 Dataset2;
BY ID;
RUN;
📌 설명:
- BY ID;를 기준으로 두 개의 데이터셋을 병합
- 같은 ID 값을 기준으로 행을 맞춤
📌 제한점:
- 두 데이터셋이 사전 정렬(PROC SORT)이 필요
- LEFT JOIN, INNER JOIN 같은 조정이 어려움
✅ 예제 4: PROC SQL JOIN 방식
PROC SQL;
CREATE TABLE SQL_Merged AS
SELECT A.ID, A.Name, B.Sales
FROM Dataset1 AS A
LEFT JOIN Dataset2 AS B
ON A.ID = B.ID;
QUIT;
📌 설명:
- LEFT JOIN을 사용해서 Dataset1의 모든 행을 유지하고, Dataset2의 일치하는 값만 추가
- 정렬(PROC SORT) 없이 바로 병합 가능!
📌 장점:
- 다양한 조인 방식(INNER JOIN, LEFT JOIN, FULL JOIN)을 쉽게 적용 가능
- 정렬이 필요 없음
📌 4. DATA STEP vs. PROC SQL 비교
비교 항목DATA STEP (MERGE, IF-THEN)PROC SQL (SELECT, JOIN)
언어 스타일 | SAS 전용 문법 | 표준 SQL 문법 |
처리 방식 | 한 행씩 읽고 처리 (Row-based) | 한 번에 전체 데이터 처리 (Set-based) |
병합 방식 | MERGE + BY 필요 | JOIN으로 다양한 방식 가능 |
정렬 필요 여부 | PROC SORT 필요 | 정렬 없이 JOIN 가능 |
조건 처리 | IF-THEN-ELSE, CASE-WHEN 가능 | CASE-WHEN 활용 |
반복 처리 | DO LOOP, ARRAY 사용 | SELECT DISTINCT, GROUP BY 활용 |
📌 결론:
✅ 데이터 변환/가공 (새 변수 만들기) → DATA STEP이 더 유용!
✅ 데이터 병합 (Join) → PROC SQL이 더 쉽고 강력함!
📌 5. 언제 DATA STEP vs. PROC SQL을 사용해야 할까?
사용 상황추천 방법
새 변수를 만들거나 데이터 가공 | ✅ DATA STEP (IF-THEN, DO LOOP) |
두 개 이상의 데이터셋 병합 | ✅ PROC SQL (JOIN) |
복잡한 조건을 적용한 필터링 | ✅ PROC SQL (WHERE, HAVING) |
데이터를 정렬한 후 분석 | ✅ DATA STEP (PROC SORT 필요) |
테이블 간 관계를 분석할 때 | ✅ PROC SQL (INNER JOIN, LEFT JOIN) |
✅ SAS에서 데이터를 다룰 때, DATA STEP과 PROC SQL을 상황에 맞게 섞어 쓰면 가장 효과적이야! 🚀
📌 최종 정리
질문DATA STEP / PROC SQL
변수 추가 & 변환 | ✅ (IF-THEN, DO) | ✅ (CASE-WHEN) |
데이터 필터링 | ✅ (WHERE, IF) | ✅ (WHERE, HAVING) |
데이터 병합 | ⚠️ (MERGE + PROC SORT 필요) | ✅ (JOIN으로 정렬 없이 가능) |
SQL에 익숙한 경우 | ❌ (SAS 고유 문법) | ✅ (SQL 기반 문법) |
📌 결론:
- DATA STEP → 행(Row) 단위로 데이터 변환, 가공할 때 사용!
- PROC SQL → 데이터 병합(Join) 및 조건 검색 시 유용!
✅ 이제 DATA STEP과 PROC SQL의 차이점을 확실히 이해했지? 🚀
반응형
댓글