본문 바로가기
SAS

[SAS] SAS 분석 출력 결과 ODS output방법 및 십진수로 표시된 숫자 푸는 방법

by SASBIGDATA김진휘 2015. 3. 19.

오늘 알아볼 내용은 그닥 중요한 것은 아니지만 실무자중에 호기심이 많은 여성분이 질문하여 나또한 호기심이 발동해 해본 것이며, 딱히 검색을 해도 잘 없길래 작성을 해본다.

 

일반적으로 우리가 어떤 분석을 하면 output이나 out을 이용해 데이터셋으로 출력을 하기도 하는데 유의확률값이나 출력창에 나타나는 출력값들은 따로 데이터셋으로 만들지는 않는다.

 

만약에 SAS에서 PROC TTEST를 이용해서 출력창에 나타나는 분석결과를 데이터형식으로 저장하고 싶다면?

두번째로 그 출력결과에 나타난 통계값들이 예를 들어 평균이나 표준편차가 너무 큰값이 나와서 지수(E)형태로 나왔을 때 1자리 숫자까지 정확하게 보고싶을 경우에는?

 

기초통계량 값 같은 경우에는 PROC MEANS를 이용해서 분석하면 1자리 수까지 정확하게 알 수 있으나 이 경우에는 TTEST결과에서 바로 보고 싶은 경우에 해결하는 방법이다.

 

약간 비효율적이지만 이것은 실무자들의 질문에 효율적인 다른 방법도 추천하지만 질문한 내용에도 답변을 주고 싶은 개인적인 욕구에 의해 시작된 것이므로  비효율적이니 이런것은 따지지 말자.

 

PROC TTEST DATA=A;

CLASS GROUP;

VAR COST;

RUN;

 

위의 코딩은 일반적인 TTEST코딩이다. TTEST이니깐 GROUP은 2개의 그룹으로 구성되어 있을 것이며, 그 두개의 그룹간의 COST(비용)를 평균비교하여 차이가 있냐 없냐를 검정한다고 생각하면 된다.

분석 결과시 보통 출력창에 3종류의 결과가 나타나는데 기초통계량, TTEST 검정 결과, 분산의 동일성검정 결과 등이 나타난다. 그런데 만약 COST값 자체가 워낙 큰 값으로 이루어져있을 경우, 출력창에 평균값이라던지 기타 값들이 첫째자리까지 상세히 나오지 않고 지수로 변경되서 나타난다.(출력 자리수문제) 하지만 우리는 PROC MEANS 말고 PROC TTEST에서 출력창에 나타난 분석 결과 값들을 데이터셋화도 시키고, 지수화 된 값들을 모두 한자리수까지 알고 싶을 때 ODS OUTPUT 이라는 명령문을 추가적으로 사용할 수 있다.

 

PROC TTEST DATA=A;

CLASS GROUP;

VAR COST;

ods output statistics=STATS;

ods output ttests=T;

ods output equality=EV;

RUN;

 

위와 같이 ods output 구문을 각각 사용하면, 기초통계량 결과 값은 STATS이라는 데이터셋으로 만들어 지고,

ttests결과는 T라는 데이터셋, 분산의 동일성 검정 결과는 EV라는 데이터셋으로 만들어져 생성된다.

 

데이터셋 저장은 성공했으나 지수로 표기되는 문제는 해결 되지 않는다.

지수로 표기되는 것을 풀려면, 생성된 데이터셋을 엑셀같은 파일로 출력하면 지수로 요약된 값이 한자리수까지 나타남을 볼수 있으며, sas에서 바로 보고 싶을시 format 변수명 자리수; 명령문을 이용해서 proc print를 하던지 여러 방법으로 해결할 수가 있다.

 

통계량 출력창 결과를 데이터셋화 시키는 것과 지수형식을 format문을 쓰지 않고 우회방법으로 푸는 방법은 검색을 해도 찾기 어렵다. 물론 외국문서를 많이 보면 찾을 수는 있다.

 

잡스킬중 하나이니 알아두면 언젠간 유용하게 사용할 수 있지 않을까 싶다.

스크린샷으로 출력결과를 붙이지 않고, 출력형식을 따로 지정해서 보고서를 쓰는 경우??ㅋ

 

www.sasbigdata.com 김 진 휘

 

 

댓글