본문 바로가기
한줄공부/SAS

SAS DATA STEP vs. PROC SQL 차이점 정리

by 올리브네 2025. 3. 9.
반응형

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의 차이점을 확실히 이해했지? 🚀

반응형

댓글