일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 풍백
- 단군
- 태그를 입력해 주세요.
- R
- 기자조선
- 선형회귀분석
- 통계
- 독사방여기요
- post hoc test
- t test
- linear regression
- repeated measures ANOVA
- 후한서
- 창평
- 패수
- 신라
- 한서
- 통계학
- 한서지리지
- 우분투
- ANOVA
- 고구려
- Histogram
- 기자
- categorical variable
- spss
- 지리지
- 유주
- 히스토그램
- 낙랑군
- Today
- Total
獨斷論
SAS 문법 - 7: PROC PRINT 활용하기 본문
데이터의 일부 행(observation)만 프린트하려면 firstobs와 obs를 추가한다.
DATA mydat;
input subj 1-4 name $ 6-23 clinic $ 25-28
gender 30 no_vis 32-33 type_vis 35-37
expense 39-45;
DATALINES;
1024 Alice Smith LEWN 1 7 101 1001.98
1167 Maryann White LEWN 1 2 101 2999.34
1168 Thomas Jones ALTO 2 10 190 3904.89
1201 Benedictine Arnold ALTO 2 1 190 1450.23
1302 Felicia Ho MNMC 1 7 190 1209.94
1471 John Smith MNMC 2 6 187 1763.09
1980 Jane Smiley MNMC 1 5 190 3567.00
;
RUN;
PROC PRINT data = mydat (firstobs=2 obs=5);
var name clinic expense;
RUN;
조건에 맞는 데이터만 출력하려면 where를 사용한다. 예를들어 expense가 2000보다 큰 데이터만 출력하고자 한다면
PROC PRINT data = mydat;
var name clinic expense;
where expense > 2000;
RUN;
와 같이 코드를 작성하면 된다.
where는 print에서 딱 한번만 나타나야 하고 기타 조건연산자 GT GE LT LE EQ NE AND OR 등을 사용할수있다.
원하는 문자열을 포함하고 있는 행만 출력하고자 한다면 CONTAINS를 이용한다.
PROC PRINT data = mydat;
var name clinic expense;
where name contains 'Smi';
RUN;
데이터값에따라 정렬하여 출력하려면 sort를 이용한다.
proc sort data=mydat out=sortedmydat;
by clinic no_vis;
run;
proc print data=sortedmydat;
var clinic no_vis name;
run;
clinic에 따라 정렬하고 그 다음에 no_vis에 따라 정렬한 데이터를 sortedmydat에 저장하여 출력하였다.
만약 out=sortedmydat를 넣지 않았다면 mydat가 정렬된다.
proc sort data=mydat;
by clinic no_vis;
run;
proc print data=mydat;
var clinic no_vis name;
run;
기본적으로 올림차순으로 정렬되지만 내림차순으로 정렬하고자 한다면
proc sort data=mydat;
by descending clinic descending no_vis;
run;
proc print data=mydat;
var clinic no_vis name;
run;
와 같이 정렬하고자 하는 변수 앞에 descending이라고 모두 넣어야 한다. 만약 by descending clinic no_vis라고 하면 clinic은 내림차순 정렬되지만 no_vis는 올림차순 정렬된다.
각 변수의 총합을 출력하려면
PROC PRINT data = mydat;
var name clinic expense no_vis;
sum expense no_vis;
RUN;
var에 no_vis를 빼먹었더라도 sum에 no_vis를 출력하도록 했다면 SAS는 var에 no_vis가 있는 것으로 간주한다.
출력할때 제목과 주석을 달고자 한다면
PROC PRINT data = mydat;
title 'Our BASIC Data Set';
footnote1 'Clinic: ALTO = altoona, LEWN = Lewistown, MNMC = Mount Nittany';
footnote3 'Type_vis: 101 = Gynecology, 190 = Physical Therapy, 187 = Cardiology';
footnote5 'Gender: 1 = female, 2 = male';
var name clinic expense no_vis;
sum expense no_vis;
RUN;
title과 footnote를 이용한다. title과 footnote를 한번 설정하고 나면 다음번 print명령을 넣을때 그대로 나타나므로 성가신 옵션이다. 다음번 print에서 title과 footnote를 지워버리려면 아래와 같이 한다.
proc print data=mydat;
title;
footnote;
var clinic;
run;
clinic을 출력할때는 title과 footnote가 공백이 되었다.
expense를 출력할때 화폐단위처럼 천단위에 쉼표를 추가하려면
proc print data=mydat;
format expense dollar9.2;
var clinic expense;
run;
dollar9.2에서 9는 달러표시($)와 쉼표와 소숫점과 숫자를 모두 포함한 자릿수이고, 2는 소숫점 이하 자릿수이다.
이외에 format은 다음과 같다.
형식 | 의미 | 예제 |
COMMAw.d | 쉼표와 소숫점을 포함 | comma8.2 |
DOLLARw.d | 달러와 쉼표와 소숫점을 포함 | dollar6.2 |
MMDDYYw. | mmddyy8.이면 10/03/08로 출력, mmddyy10.이면 10/03/2008로 표시된다. | mmddyy10. |
w. | 반올림한 정수 | 7. |
w.d | 소숫점 이하가 d자리인 수 | 8.2 |
DATEw. | date7.이면 02OCT08로 표시되고 date9.이면 02OCT2008로 표시 | date9. |