Search

DATA Step

태그
목차

1. 다양한 형식의 데이터 읽기

1) 공백 문자로 구분된 데이터 읽기(list input)

•
모든 자료 값이 하나 이상의 공백문자로 구분되어 있는 경우에 사용
•
INPUT 명령문에 변수명을 순서대로 입력해야 함
•
문자형 변수의 경우 변수명 뒤에 $로 표기
•
결측값은 한 개의 마침표(.)로 표시되어야 함
•
문자 변수의 자료 값은 공백문자를 포함하지 않아야 하며, 길이가 8자리를 넘지 않아야 함
•
한 행에 여러 관찰치의 자료가 연속하여 입력된 경우에는 @@(double trailing at)을 사용
◦
@@ : 해당 줄에 있는 모든 자료의 값을 전부 읽을 때까지 다음 줄로 포인터가 이동하지 않도록 지정
•
예시 1
DATA grade; INPUT id name $ class $ score grade $; CARDS; 2590 john Stat 80.3 A 3569 willy Math . B 7048 younghee . 30.6 C 9087 . Eng 100 A ; RUN;
Plain Text
복사
•
예시 2
DATA one; INPUT x y @@; CARDS; 1 2 3 4 5 6 7 8 9 10 ; RUN;
Plain Text
복사

2) 고정 문자로 구분된 데이터 읽기(column input)

•
모든 자료 값들이 열에 맞추어 정리되어 있는 경우에 사용한다.
•
INPUT 명령문에 각 변수 명 뒤 해당 변수 자료 값이 들어있는 열 지시자를 입력
•
‘공백 문자로 구분된 데이터 읽기(list input)’에 비해 다음과 같은 이점이 있음
◦
자료 값들 사이에 공백문자를 입력하지 않아도 됨
◦
문자 변수의 자료가 공백문자를 포함할 수 있으며, 최대 200자리까지 입력 가능
◦
결측값을 공백문자로 처리 가능
◦
필요 없는 변수의 자료는 읽지 않을 수 있음
◦
읽는 열의 위치가 지정되므로 어떤 순서로 읽어도 무방하며, 같은 열을 반복하여 읽을 수도 있음
•
예시
DATA grade1; INPUT name $ 11-18 class $ 20-35 classid 1-4 score 36-40 grade $ 41; CARDS; 259067048 김철수 Statistics 80.3A 356989087 박민호 Mathematics B 704842534 이영희 30.6C 908727844 English 100 A 424573465 남궁수지 Computer Science ; PROC PRINT DATA=grade1; RUN;
Plain Text
복사

3) 특수 포맷으로 구분된 데이터 읽기(formatted input)

•
표준 데이터 (영문자, 한글, 숫자, -부호, 소수점 등으로만 입력)와 비표준 데이터 (그 이외 다른 특수문자, $ 등이 함께 입력)가 존재함
•
특별한 형식으로 입력된 비표준 데이터를 읽을 때에는 INPUT 명령문의 변수명 뒤에 입력 포맷 (informat, 생략 시 표준 숫자 자료로 인식)과 형식을 ‘w.d’ (w: 전체 자릿수, d: 소수점 이하 자릿수로 생략시 0으로 인식) 형태로 표기해 주어야 함
•
이 방식을 사용하는 경우 대게 아래와 같은 line-control, pointer-control 지시자가 필요함
◦
Point-control
▪
+n : 입력 포인터의 위치를 n 칸만큼 오른쪽으로 이동시켜 자료를 읽도록 지시
▪
@n : 입력 포인터의 위치를 n 번째 열로 이동시켜 자료를 읽도록 지시
◦
Line-control
▪
/ : 입력 포인터의 위치를 다음 줄의 첫 열로 이동시켜 자료를 읽도록 지시
▪
#n : 입력 포인터를 데이터의 매 n 번째 행의 첫 열로 이동시켜 자료를 읽도록 지시
•
예시
DATA dept; INPUT name $18. +1 hired DATE7. +1 salary 5. ; FORMAT hired DATE7.; CARDS; Martin, Viginia 09aug80 34800 Singleton, MaryAnn 24apr85 27900 Leighton, Maurice 16dec83 32600 Freuler, Carl 15feb88 29900 Cage, Merce 19oct82 39800 ; PROC PRINT; TITLE 'SAS Data-Set dept'; RUN;
Plain Text
복사

2. 기본 명령어

1) SET 명령어

: 기존에 존재하는 SAS 파일을 새로운 SAS 파일로 다시 정의하거나, 2개 이상의 SAS 파일을 변수방향으로 병합할 때 사용하는 명령어
•
기존에 존재하는 SAS 파일을 새로운 SAS 파일로 다시 정의하는 경우
DATA new-data-set-name; SET old-data-set-name; RUN;
Plain Text
복사
•
2개 이상의 SAS 파일을 합쳐서 새로운 SAS 파일을 생성하는 경우
DATA new-data-set-name; SET old-data-set-name1 old-data-set-name2; RUN;
Plain Text
복사
→ SET 명령어를 이용하여 두 파일을 병합하고자 하는 경우 두 파일에 포함된 변수명은 반드시 일치해야 함.

2) MERGE 명령어

: 2개 이상의 SAS 파일을 관측치방향으로 합쳐서 하나의 새로운 파일을 만들고자 하는 경우 사용하는 명령어
DATA new-data-set-name; MERGE old-data-set-name1 old-data-set-name2; RUN;
Plain Text
복사
→ 두 파일에 동일한 변수명이 존재하는 경우 두 번째 파일에서 사용된 변수가 남아있게 됨.

3) KEEP 명령어

: SAS 파일에 존재하는 변수 중에서 특정변수만 포함하는 SAS 파일을 정의하고자 할 때 사용하는 명령어
•
방법1
DATA new-data-set-name; SET old-data-set-name; KEEP variable1 variable2 ... ; RUN;
Plain Text
복사
•
방법2
DATA new-data-set-name (KEEP = variable1 variable2 ...); SET old-data-set-name; RUN;
Plain Text
복사

4) DROP 명령어

: SAS 파일에 존재하는 변수 중에서 특정 변수들을 삭제한 후 나머지 변수들만을 포함하는 SAS 파일을 정의하고자 할 때 사용하는 명령어
•
방법1
DATA new-data-set-name; SET old-data-set-name; DROP variable1 variable2 ... ; RUN;
Plain Text
복사
•
방법2
DATA new-data-set-name (DROP = variable1 variable2 ...); SET old-data-set-name; RUN;
Plain Text
복사

5) 조건문

: SAS 파일에 포함되어 있는 자료에 대해 조건함수를 사용하여 새로운 변수를 생성하거나 전체 자료 중 특정 조건에 맞는 자료만을 추출하여 새로운 SAS 파일로 구성하고자 할 때 사용하는 명령어
•
Condition1을 만족하면 expression1을 실행하고, 만족하지 않는 경우 다음 구문으로 넘어가서 condition2를 순차적으로 평가함
•
예시
DATA cc ; SET class1 ; IF dept = '통계' THEN math1 = math+5; ELSE math1 = math; RUN;
Plain Text
복사