취미생활/프로그래밍

SAS로 외부 데이터 불러오기

내가그리는인생 2025. 7. 4. 17:44
반응형

SAS Base 환경에서 CSV, Excel, 텍스트, JSON, 데이터베이스 등 외부 데이터를 불러오는 방법과 데이터 이야기 해봅니다.

 

1. CSV 및 텍스트 파일 불러오기

가장 일반적인 형식인 CSV 파일은 PROC IMPORT 절차로 손쉽게 불러올 수 있습니다.

PROC IMPORT DATAFILE="C:\data\customers.csv"
            OUT=work.customers
            DBMS=CSV REPLACE;
     GETNAMES=YES;
     DATAROW=2;
RUN;
  • GETNAMES=YES: 첫 행을 변수명으로 사용
  • DATAROW=2: 데이터는 2행부터 시작

장점: 단순하고 빠르며 다양한 툴에서 생성된 파일과 호환이 뛰어납니다.

주의사항:

  • 구분자 오류로 인해 열이 엉킬 수 있음
  • 변수 자동 인식 오류(문자/숫자 혼동) 가능성
  • 특수 문자 및 한글 인코딩 문제 자주 발생

고급 설정이 필요할 경우 INFILEINPUT 구문으로 세부 제어가 가능합니다.

2. 고정폭 텍스트 파일 (Fixed-width format)

DATA work.fixed_in;
     INFILE "C:\data\fixed.txt" LRECL=80;
     INPUT id      1-5
           name    $6-25
           salary  26-34  comma10.2;
RUN;
  • 각 변수의 위치를 직접 지정하며, LRECL은 줄 길이 설정입니다.

장점: 대용량 처리 시 빠르고, 형식이 고정되어 있어 정밀한 제어가 가능

주의사항:

  • 열 위치가 조금만 틀어져도 전체 데이터가 잘못 해석됨
  • 누락 데이터, 비정규 줄 길이로 오류 발생 가능

3. Excel 파일 불러오기

PROC IMPORT DATAFILE="C:\data\report.xlsx"
            OUT=work.report
            DBMS=XLSX REPLACE;
     SHEET="Sheet1";
     GETNAMES=YES;
RUN;

.xls 파일은 DBMS=XLS, .xlsxDBMS=XLSX로 설정하며, 특정 시트나 범위 지정도 가능합니다.

장점: 사용자가 친숙하고 시트 구조에 따라 데이터를 논리적으로 분리 가능

주의사항:

  • 숨겨진 행/열로 인해 값이 잘못 불러와질 수 있음
  • 날짜 및 숫자 자동 변환 오류 발생 가능
  • 셀 병합 및 주석 등 비정형 데이터가 포함될 경우 해석 불가

4. JSON 파일 불러오기

LIBNAME jlib JSON "C:\data\data.json";
DATA work.json_data;
     SET jlib.root;
RUN;
LIBNAME jlib CLEAR;

복잡한 중첩 구조일 경우 JSON 라이브러리와 PATH 옵션을 함께 사용합니다.

장점: API 또는 웹 기반 시스템과 연동이 편리하고, 계층형 데이터 처리에 유리

주의사항:

  • 중첩 객체가 많을 경우 변환 테이블 이해 어려움
  • 배열 누락, 구조 오류 등으로 불러오기 실패 가능

5. 데이터베이스 연동 (ODBC)

LIBNAME mydb ODBC DSN="mydsn" USER="id" PASSWORD="pw";
DATA work.db_data;
     SET mydb.table_name;
RUN;
LIBNAME mydb CLEAR;

SAS는 다양한 DBMS를 지원하며, DSN 설정 후 LIBNAME을 통해 직접 연동할 수 있습니다.

장점: 대량의 데이터를 직접 불러올 수 있으며, 최신 데이터를 실시간으로 활용 가능

주의사항:

  • 사용자 인증 오류 및 권한 문제 발생 가능
  • 네트워크 불안정으로 인한 중단 위험
  • 데이터 타입 불일치 시 SAS 변수 자동 변환 오류

6. MS Access 파일 불러오기

LIBNAME accdb ACCESS PATH="C:\data\data.accdb";
DATA work.accdata;
     SET accdb.my_table;
RUN;
LIBNAME accdb CLEAR;

장점: 소규모 응용 프로그램이나 로컬 데이터 수집에 유용하며, 기존 Access 쿼리도 활용 가능

주의사항:

  • OLEDB 또는 32비트 Office 환경 요구될 수 있음
  • 테이블 이름, 필드 이름에 공백이 있을 경우 SAS에서 오류 발생 가능

7. SPSS, Stata 등 기타 파일

PROC IMPORT DATAFILE="C:\data\data.sav"
            OUT=work.spss_data
            DBMS=SAV REPLACE;
RUN;

.sav, .dta 등도 PROC IMPORT로 불러올 수 있으며, 변수명과 라벨 정보까지 유지됩니다.

장점: 통계 패키지 간 파일 호환이 가능하며, 라벨, 포맷 등 메타정보도 유지됨

주의사항:

  • 파일 버전이 다르면 SAS에서 읽히지 않을 수 있음
  • 값 라벨이 깨지거나 인코딩 오류 발생 가능
  • 일부 형식은 완전히 지원되지 않음
SMALL

[데이터 검증의 중요성과 SAS 활용]

데이터를 불러온 후에는 반드시 데이터 품질을 검토해야 합니다. SAS에서는 다양한 절차를 통해 검증을 수행할 수 있습니다. 아래는 실무에서 유용하게 활용할 수 있는 검증 방법들입니다.

1. 변수 구조 확인

변수명, 데이터 타입, 길이 등을 확인하여 예상과 일치하는지 확인합니다.

PROC CONTENTS DATA=work.customers; RUN;

2. 통계 요약 및 결측치 확인

숫자형 변수의 기초 통계를 확인하고 결측치 존재 여부를 파악합니다.

PROC MEANS DATA=work.customers N NMISS MIN MAX; VAR age income; RUN;

3. 범주형 변수 빈도 분석

성별, 지역 등 범주형 변수의 값 분포를 확인해 이상치나 오탈자를 식별합니다.

PROC FREQ DATA=work.customers; TABLES gender / MISSING; RUN;

4. 이상치 탐지 및 조건 검증

업무 규칙에 따라 비정상적인 수치나 논리적으로 불가능한 값을 탐지합니다.

DATA check;
    SET work.customers;
    IF age < 0 OR age > 120 THEN flag_age = 1;
    IF income < 0 THEN flag_income = 1;
RUN;

5. 중복 키 및 유니크성 확인

ID 등 기본키 기준으로 중복 데이터를 검출하여 정합성 확보

PROC SORT DATA=work.customers NODUPKEY; BY id; RUN;

6. 누락 패턴 분석

변수 간 누락값 패턴을 탐색해 변수 간 상관된 결측이 있는지 분석합니다.

PROC MI DATA=work.customers NIMPUTE=0; VAR age income gender; RUN;

7. 자동화된 품질 리포트 생성

검증 결과를 자동 보고서(PDF 등)로 생성하여 문서화할 수 있습니다.

ODS PDF FILE="C:\report\qc_report.pdf";
PROC MEANS DATA=work.customers; RUN;
PROC FREQ DATA=work.customers; TABLES gender; RUN;
ODS PDF CLOSE;

SAS를 활용한 외부 데이터 불러오기는 형식별로 정확한 구문을 숙지하는 것이 중요합니다. 본문에서 소개한 CSV, 텍스트, Excel, JSON, DB, 기타 파일 불러오기 예제를 실습하며 익히면 다양한 환경에서도 안정적인 분석이 가능해집니다. 특히 데이터 품질 검토는 데이터를 불러온 후 반드시 거쳐야 할 중요한 과정이며, SAS는 이를 위한 강력한 기능을 제공합니다.

반응형