반응형
컨셉
일반적으로 SAP 작성 시 Mock-up shells (Dummy table)은 손으로 작성하면 매우 많은 시간이 소요되기 때문에 대부분 SAS 프로그램을 이용하여 출력한다.
하지만, 기껏 Mock-up shells 를 프로그램을 이용하여 출력했는데도 통계분석 시 또다시 Label 등을 함께 코딩하여 사용하지 않아도 될 시간을 중복으로 사용하곤 한다.
오늘은 Mock-up shells를 프로그램을 이용하여 출력했을 때, 미리 만들어진 Mock-up shells와 통계분석 결과를 결합하여 ODS 출력 Table을 생성하는 방법에 대해 알아보자.
1. Mock-up shells
다들 본인의 매크로 프로그램을 이용하여 만들겠지만, 예제를 위해 수동으로 작성해본다.
data a; retain _STAT_; length _STAT_ GROUP1-GROUP2 $100.; _STAT_="^R/RTF'\b' "||"연령 (세)"; GROUP1=""; GROUP2=""; output; _STAT_="^R/RTF'\b' "||"^R/RTF'\li250' "||"Baseline"; GROUP1=""; GROUP2=""; output; _STAT_="^R/RTF'\li500' "||"N"; GROUP1="xx"; GROUP2="xx"; output; _STAT_="^R/RTF'\li500' "||"MEAN"; GROUP1="xx.xx"; GROUP2="xx.xx"; output; _STAT_="^R/RTF'\li500' "||"STD"; GROUP1="xx.xx"; GROUP2="xx.xx"; output; _STAT_="^R/RTF'\li500' "||"MEDIAN"; GROUP1="xx.xx"; GROUP2="xx.xx"; output; _STAT_="^R/RTF'\li500' "||"MIN"; GROUP1="xx.xx"; GROUP2="xx.xx"; output; _STAT_="^R/RTF'\li500' "||"MAX"; GROUP1="xx.xx"; GROUP2="xx.xx"; output; data shell_Table1_1; set a; SERIAL=1; SERIAL2=_N_-3; run; |
- 위 코드를 실행할 시 아래와 같은 Mock-up shell 생성
- 이때 함께 생성되는 SERIAL 및 SERIAL2에 주목
2. 통계분석
- 통계분석 역시 본인의 매크로 프로그램을 이용하여 분석하겠지만, 예제를 위해 수동으로 작성해본다.
proc means data=ex n mean std median min max; class TRTPN; var AGE; output out=means(where=(TRTPN^=.)) N=N MEAN=MEAN STD=STD MEDIAN=MEDIAN MIN=MIN MAX=MAX; run; proc transpose data=means prefix=COL out=trans(drop=_LABEL_ rename=(_NAME_=_STAT_)); id TRTPN; var N MEAN STD MEDIAN MIN MAX; run; data output; retain GROUP1 GROUP2 SERIAL SERIAL2; set trans; SERIAL=1; SERIAL2=_N_-1; if SERIAL2=0 then GROUP1=strip(put(COL1,8.)); else GROUP1=strip(put(COL1,8.2)); if SERIAL2=0 then GROUP2=strip(put(COL2,8.)); else GROUP2=strip(put(COL2,8.2)); drop _STAT_ COL1-COL2; run; |
- 역시 함께 생성되는 SERIAL 및 SERIAL2에 주목
3. ODS 출력 Table
data Table1_1; merge shell_Table1_1 output ; by SERIAL SERIAL2; run; |
- Mock-up shell과 통계분석의 SERIAL, SEIRAL2 만 일치시킨다면 통계분석 시 Label (_STAT_열) 을 다시 코딩하지 않고 merge 과정을 통해 ODS 출력 Table을 생성 가능
- 코드를 여러번 작성하지 않기 때문에 시간 절약 및 실수 줄이기 가능
반응형
'끄적이는 프로그래밍 > SAS 프로그래밍' 카테고리의 다른 글
SAS programming 기초 (제어문, IF, Do loop, Select when) (0) | 2022.08.28 |
---|---|
SAS programming 기초 (Dataset 만들기, 외부데이터 불러오기, proc import, infile 문) (2) | 2022.08.27 |
SAS로 RTF 파일 출력하기 4 (proc sgplot) (0) | 2022.08.11 |
SAS로 RTF 파일 출력하기 3 (proc report) (2) | 2022.08.09 |
SAS로 RTF 파일 출력하기 2 (2) | 2022.05.06 |