獨斷論

SAS 문법 - 2 데이터 불러오기 본문

과학과 기술/SAS

SAS 문법 - 2 데이터 불러오기

부르칸 2021. 8. 25. 04:44

SAS로 데이터를 불어들일때 데이터 파일을 읽어들이는 방법과 SAS 코드 안에 직접 입력하는 방법이 있다.

 

1. SAS 코드에 데이터 입력

일단 아래 코드를 입력하고 실행한다.

DATA mydata;
  INPUT subj 1-4 gender 6 height 8-9 weight 11-13;
  DATALINES;
1024 1 65 125
1167 1 68 140
1168 2 68 190
1201 2 72 190
1302 1 63 115
;
RUN;
 
PROC PRINT data=mydata;
  TITLE 'Output dataset: mydata';
RUN;

첫째줄: DATA mydat는 mydata라는 이름의 데이터를 만들겠다는 뜻이고

 

둘째줄: INPUT 키워드 뒤로 데이터에 들어가는 변수명이 주어졌는데 여기서는 subj, gender, height, weight라는 변수가 만들어진다. 그리고 변수명 뒤로 숫자는 데이터가 존재하는 열의 위치를 나타내는데 subj 1-4는 subj라는 변수가 값은 1번째 열에서 4번째 열까지 존재한다는 뜻이며 gender 6은 6번째 열만 gender의 값이라는 뜻이다.

 

세째줄: DATALINES 다음으로 데이터를 입력하게 된다. subj 1-4로 지정하였으므로 1에서 4번째 열까지 값인 1024, 1167 등등이 subj의 값이 되고 gender 6으로 지정하였으므로 6번째 열의 값인 1, 1, 2, 2, 등의 값이 gender의 값이 된다. 데이터를 다 입력하고 난 뒤에는 꼭 "줄을 하나 바꾸고" 세미콜론으로 구분하여야 한다.

 

DATA step은 실행하기 위하여 마지막에 RUN을 입력한다.

 

만약 character 변수가 존재한다면 변수명 뒤에 공백을 하나 넣고 달러( $ )를 입력한다. 예를들어 subj의 값들이 숫자가 아니라 아래처럼 문자가 포함되어 있다면

DATA mydata;
  INPUT subj $ 1-5 gender 7 height 9-10 weight 12-14;
  DATALINES;
S1024 1 65 125
S1167 1 68 140
S1168 2 68 190
S1201 2 72 190
S1302 1 63 115
;
RUN;
 
PROC PRINT data=mydata;
  TITLE 'Output dataset: mydata';
RUN;

subj 뒤에 공백을 하나 넣고 $를 입력한 뒤에 변수값이 존재하는 열의 위치를 지정한다. subj의 값이 1024에서 S1024가 되었으므로 1-4가 아니라 1-5이고 gender도 6에서 7로 바뀌었다.

 

2. SAS에서 데이터파일 불러오기

아래와 같은 텍스트파일을 만들고 각자 원하는 디렉토리에 저장한다.

1024 1 65 125
1167 1 68 140
1168 2 68 190
1201 2 72 190
1302 1 63 115

만들기 귀찮으면 이걸 내려받는다.

mydata.txt
0.00MB

이제 이 mydata.txt 파일의 데이터를 SAS로 불러들이면

data WgtHgt;
	infile "d:\tmp\mydata.txt";
	input subj 1-4 gender 6 height 8-9 weight 11-13;
run;

proc print data = WgtHgt;
run;

두번째 줄에서 파일이 있는 위치를 infile 로 알려주고 input에서 데이터 위치와 변수명을 알려준다.

 

3.  CSV 파일 불러오기

만약 데이터파일이 쉼표로 분리된 csv파일이라면

1024,1,65,125
1167,1,68,140
1168,2,68,190
1201,2,72,190
1302,1,63,115

파일:

mydata.csv
0.00MB

infile에 delimiter 옵션을 추가한다.

데이터의 각 열을 구분할 필요가 없으므로 input에서는 변수명만 입력하면 된다.

data WgtHgt1;
	infile "d:\tmp\mydata.csv" delimiter=",";
	input subj gender height weight;
run;

proc print data = WgtHgt1;
run;

 

데이터파일 첫줄에 변수명이 입력되어 있다면 2번째줄부터 읽도록 옵션을 추가한다.

subj,gender,height,weight
1024,1,65,125
1167,1,68,140
1168,2,68,190
1201,2,72,190
1302,1,63,115

파일:

mydataobs.csv
0.00MB

infile의 옵션으로 firstobs = 2를 추가하여 2번째줄부터 읽도록 하였다.

data WgtHgt2;
	infile "d:\tmp\mydataobs.csv" delimiter="," firstobs=2;
	input subj gender height weight;
run;

proc print data = WgtHgt2;
run;

 

Comments