일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- categorical variable
- spss
- post hoc test
- 한서
- 통계학
- 선형회귀분석
- 창평
- repeated measures ANOVA
- 신라
- 기자조선
- 단군
- 우분투
- 풍백
- 태그를 입력해 주세요.
- 고구려
- t test
- 낙랑군
- 기자
- R
- linear regression
- 독사방여기요
- 지리지
- 유주
- 한서지리지
- 패수
- 통계
- Histogram
- 후한서
- ANOVA
- 히스토그램
- Today
- Total
獨斷論
SAS 문법 - 4 데이터 불러오기 본문
Formatted Input
Formatted input은 문자나 숫자가 아닌 천단위에 쉼표가 들어갔거나, 날짜를 나타낼때 슬래쉬가 들갔거나, %단위가 들어간 경우 등의 여러가지 경우의 데이터를 불러들일때 사용한다.
형식은 아래와 같다.
INPUT <pointer-control> variable informat.;
pinter-control은 어디서부터 읽어야할지 나타내고
variable은 변수명
informat.은 어떤형식으로 읽을지를 나타낸다. 이를들어 informat.이 mmddyy8.이면 10/27/21과 같이 총 8자리(2개의 슬래시 포함)의 날자형식이다. comma6.이면 11,235과 같이 쉼표가 들어간 총 6자리(쉼표 포함)의 숫자형식이다. 주의할건 마지막에 점( . )을 꼭 찍도록 해야한다.
data mydat;
input @1 subj 4.
@27 height 5.2
@33 weight 3.;
datalines;
1024 Alice Smith 1 65.00 125 12/1/95 2,036
1167 Maryann White 1 68.12 140 12/01/95 1,800
1168 Thomas Jones 2 190 12/2/95 2,302
1201 Benedictine Arnold 2 68.36 190 11/30/95 2,432
1302 Felicia Ho 1 63.98 115 1/1/96 1,972
;
run;
proc print data=mydat;
run;
@1 subj 4.로부터 subj변수에 총 1열부터 시작해서 4자리까지 subj에 넣도록 하였다는 것을 알수 있다.
@27 height 5.2로부터 height변수에 27열부터 시작해서 총 5자리(소숫점까지 포함하여)를 읽는데 소수점 이하를 2자리로 정하였다는 것을 알수 있다. 만약 잘못하여 @27 height 5.으로 코딩하였다 할지라도 소수점 이하의 숫자는 정상적으로 입력되어 65.00이 된다. 하지만 만약 @27 height 2.1이라고 입력하면 전체 자리수를 맞추지 못하였으므로 65.00이 입력되지 못하고 6.5가 입력되므로 주의해야 한다.
이제 문자열을 불러들여보자
data mydat;
input @6 firstname $11.
@18 lastname $6.
@27 height 5.2
@33 weight 3.;
datalines;
1024 Alice Smith 1 65.00 125 12/1/2021 2,036
1167 Maryann White 1 68.12 140 12/01/2021 1,800
1168 Jones 2 190 12/2/2020 2,302
1201 Benedictine Arnold 2 68.36 190 11/30/2021 2,432
1302 Felicia Ho 1 63.98 115 1/1/2021 1,972
;
run;
proc print data=mydat;
run;
FirstName이라는 변수의 값을 6번째 열로부터 11개의 열을 읽도록 하였다. FirstName은 character변수이므로 $11.과 같이 적었다. LastNmae dms 18번째 열부터 6개의 열을 읽도록 하였다.
이제 날짜와 쉼표가 들어간 숫자를 읽어보자
data mydat;
input @6 firstname $11.
@18 lastname $6.
@27 height 5.2
@33 weight 3.
@37 yeardate mmddyy10.
@48 calorie comma5.;
datalines;
1024 Alice Smith 1 65.00 125 12/1/2021 2,036
1167 Maryann White 1 68.12 140 12/1/2021 1,800
1168 Jones 2 190 12/2/2020 2,302
1201 Benedictine Arnold 2 68.36 190 11/30/2021 2,432
1302 Felicia Ho 1 63.98 115 1/1/1999 1,972
;
run;
proc print data=mydat;
format yeardate mmddyy10. calorie comma5.;
run;
yeardate의 형식을 mmddyy10.으로 하였는데 이는 총 10자리를 읽을때 월 일 년도 순으로 읽으라는 뜻이다.
calorie의 형식을 comma5.로 하였는데 쉼표를 포함하여 5자리를 읽되 쉼표를 제거하라는 의미이다.
형식에 맞게 읽더라도 출력을 할때에는 다시 그 형식대로 출력하는게 좋다.
proc print에서 yeardate를 mmddyy10.이라고 지정해 주었고 calorie로 comma5.로 지정해주었다. 만약 format을 지정해주지 않으면 쉼표가 들어간 숫자는 그대로 숫자만 출력하지만 날짜는 완전히 다른 숫자로 출력이 되므로 꼭 형식을 지정해서 출력해주어야만 한다.
위 내용은 데이터 파일로 불러들일때도 똑같이 적용된다.