끄적이는 프로그래밍/SAS 프로그래밍

SAS programming 기초 (Dataset 만들기, 외부데이터 불러오기, proc import, infile 문)

요맘때10 2022. 8. 27. 20:47
반응형

목적

오늘은 SAS 프로그램을 이용하여 dataset을 만드는 방법에 대해 알아보자.

SAS 프로그램에서 dataset을 만드는 방법은 크게 아래와 같은데,

- SAS 프로그램 내에서 data step을 이용하여 dataset을 만드는 방법

- 외부 데이터 (Excel, DB, text file 등등)를 불러와 dataset을 만드는 방법


 

1. SAS 프로그램 내에서 dataset을 만드는 방법

아래와 같이 직접 확장편집기에 SAS code를 입력하여 만들 수 있다.

data a;
  input a b c;
datalines;
1 2 3
4 5 6
7 8 9
;
run;

- data 데이터셋명; ~~~ run;

- input: 변수 지정 (문자 변수는 뒤에 $를 붙인다. 예를 들면 a $ b $ c $)

- datalines(cards): record 지정


 

2. 외부 데이터 (Excel, DB, text file 등등)를 불러와 dataset을 만드는 방법

2.1 Import 프로시저 (Proc import)

엑셀 파일(Excel)

proc import 
  datafile="c:\test.xlsx"
  out=a dbms=excel replace;
  sheet="Sheet1";
  getnames=yes;
run;

- datafile: 파일 주소

- out: 만들 데이터셋명

- dbms: 파일 형식

- replace: 덮어쓰기

- sheet: 시트명

- getnames: 첫번째 행을 변수명으로 가져오기

반응형

- dbms를 이용하여 여러 형식의 파일을 불러올 수 있다. 결과는 모두 같다.

쉼표로 구분된 파일(CSV)

proc import 
  datafile="c:\test.csv"
  out=a dbms=csv replace;
  getnames=yes;
run;

Text 파일(구분자: tab)

proc import 
  datafile="c:\test.txt"
  out=a dbms=tab replace;
  getnames=yes;
run;

Text 파일(구분자: ,)

proc import 
  datafile="c:\test.txt"
  out=a dbms=dlm replace;
  getnames=yes;
run;

 

2.2 Infile 문 활용하기

data a;
  infile 'c:\test.txt' firstobs=2 expandtabs;
  input a b c;
run;

- infile: 파일 주소

- firstobs: 첫번째 데이터의 행

- expandtabs: 구분자가 tab으로 되어 있음

- input: 변수명

Infile 기타 옵션들

- missover: 읽지 못한 변수를 결측치 처리 (마지막 변수를)

- flowover: default. 변수에 해당하는 값이 없으면 다음 행으로 넘어간다.

- dlm=: 구분자, dsd(comma를 구분자로 사용), expandtabs (dlm='09'x) 등등 있음


 

반응형