SAS통계프로그래밍
SAS_다양한 INPUT 명령문의 형식
jinijinhee
2022. 6. 7. 21:25
목차
1. 공백문자로 구분된 데이터 읽기
2. 고정 포맷으로 입력된 데이터 읽기
3. 특수 포맷으로 입력된 데이터 읽기
4. 하나의 개체가 여러줄에 입력되어 있는 데이터 읽기
5. 여러개의 개체가 한 줄에 연속해서 입력되어 있을때
6. 기본적인 INFILE 옵션
1. 공백문자로 구분된 데이터 읽기
DATA mysas.grade;
INPUT id name $ class $ score grade $;
CARDS;
2590 john Stat 80.3 A
3569 willy Math . B
7048 younghe . 30.6 C
9087 . Eng 100 A
. e.t . . .
;
RUN;
자유포맷에 의한 입력에서 지켜야 할 규칙
- 데이터의 자룟값들은 적어도 하나 이상의 공백문자에 의해 분리
- 다른 구분자를 사용한 데이터가 입력되어 있는 경우 : INFILE 명령문과 DLM옵션 사용해 구분자 지정해 줄것.
- 각 결측값은 한개의 마침표 . 로 표시
- 문자변수 자료값은 공백문자 포함하지 않아야, 길이가 최대 8자리.
- 문자 변수의 자료값이 8자리 넘으면 앞에서부터 8자리만을 데이터셋에 저장.
- LENGTH명령문을 사용 : 문자변수가 저장될 바이트 수를 미리 선언.
2. 고정 포맷으로 입력된 데이터 읽기
DATA mysas.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
;
RUN;
고정포맷으로 입력 : INPUT 변수 ($) 1-3
장점 :
- 값 사이에 공백문자 입력 필요X
- 문자변수가 공백 포함 가능 최대 32767자리
- 결측값 공백문자로 처리 가능
- 필요없는 변수에 대한 자룟값을 읽지 않을 수 있다.
- 읽을 열의 위치가 지정되므로 어떤 순서로 읽어도 무방하며, 같은 열을 반복하여 읽을 수 있다.
3. 특수 포맷으로 입력된 데이터 읽기( 🌟🌟🌟🌟🌟)
표준데이터 : 영문자 또는 한글, 숫자, 부호, 소수점 등으로 입력 된 데이터
비표준데이터 : 표준데이터 외에 다른 특수문자와 함께 입력되어있는 데이터
EX)10,000(콤마) $100(달러), 16진수로 입력된 자료, 날짜자료
→특별한 형식 가진 비표준 데이터의 경우 : 입력포맷 사용
입력포맷 : 문자형, 숫자형, 날짜형
DATA mysas.dept;
INPUT name $18. +1 hired DATE7. +1 salary 5.;
FORMAT hired DATE7. ;
CARDS;
Martin, Virginia 09aug80 34800
SIngleton, MaryAnn 24apr85 27900
Leighton, Maurice 16dec83 32600
Freuler, Carl 15feb88 29900
Cage, Merce 19oct82 39800
;
RUN;
DATA mysas.club;
INPUT idno name $ 6-19 @25 team $6. strtwght endwght;
CARDS;
1023 David Shaw red 189 165
1049 Amelia Serrano yellow 189 165
;
RUN;
열이동 : + @
+n: 옆으로 n칸 이동해라
@25 : 25번째 열로 이동해라
4. 하나의 개체가 여러줄에 입력되어 있는 데이터 읽기
DATA mysas.club;
INPUT idno name $ 6-19 / team $6. #3 strtwght endwght;
CARDS;
1023 David shaw
red
189 165
1049 Amelia Serrano
yellow
189 165
;
RUN;
행이동 : / #
/ : 다음줄의 첫열
#n : 포인터의 위치를 데이터의 매 n번째 행의 첫 열로 이동.
입력 포맷과 출력 포맷은 별도이다 !
5. 여러개의 개체가 한 줄에 연속해서 입력되어 있을때
: @@ 쭉 연달아 읽어라는 뜻
DATA mysas.double;
INPUT x y @@;
CARDS;
1 2 3 4
5 6 7
8 9 10
;
RUN;
6. 기본적인 INFILE 옵션
- FIRSTOBS=n : n번째 줄에서부터 자료를 읽기 시작하도록 지정
- MISSOVER : 자룟값을 읽지 못한 변수에 대해서 결측값으로 처리
- DLM=옵션 : 하나 이상의 문자 또는 특수기호 등을 자료값의 구분자로 지정(결측값 따로 표기 안하고 패스함.)
- DSD : ,콤마를 구분자로 사용, 근데 결측값 인지해서 .으로 나타냄. 인용부호 안에 있는 값만 나옴.
- EXPANDTABS : 구분자를 탭 문자로 지정