데이터를 처음 확인할때 각 변수별로 빈도를 점검한다.
[PROC FREQ]는 가장 많이 쓰는 함수인데, N개의 변수를 쓰면 N개의 빈도표가 출력된다.
한개의 테이블에서 여러개 변수의 빈도표를 출력하고 싶을때 (dummy table등을 만들때)
[PROC TABULATE] 를 사용하면 좀 더 편리하겠다.
(결과창을 엑셀에 여러번 복/붙 하는 시간도 줄일 수 있다.)
*데이터 출처: 공공데이터 포털, (건강보험심사평가원의 요양기관 개설 현황)
[Institution]이라는 데이터셋을 사용해서 연습해보자.
(오픈 데이터이지만 주소는 그냥 가렸습니다. '_' )
1) 시도명(SIDO), 요양기관종별(medical_type), 표시과목(subject) 의 빈도 출력
PROC FREQ data=institution;
tables SIDO medical_type subject/missing norow nocol nocum;
run;
PROC TABULATE data=institution;
class SIDO medical_type subject;
tables SIDO medical_type subject, all;
run;
FREQ는 각 변수에 대해 하나씩 TABLE이 생성되고, TABULATE는 한개의 테이블에 출력되는데, 사실 1개의 변수에 대한 결과는 별 차이가 없다. (FREQ가 더 편할수도...)
2) 전국을 수도권/비수도권으로 나누어서 2*2table을 만들어보자.
2-1) 수도권=1, 비수도권=2 로 코딩된 CAPITAL이라는 새로운 변수 생성.
data a1;
set institution;
if substr(SIDO,1,4) in ('서울','경기','인천') then capital=1; else capital=2;
run;
이제 수도권별 요양기관종별, 표시과목의 빈도를 확인해보자.
PROC TABULATE data=a1;
class capital medical_type subject;
tables all medical_type subject, all capital;
run;
(변수 앞에 all을 써주면 행, 열의 전체 합계가 함께 출력된다. 한쪽에만 써줘도 됨.)
** 빈도 뿐 아니라 행, 열의 백분율도 함께 출력가능하다.
행의 합=100%로 표현: rowPCTN
열의 합=100%로 표현: colPCTN
(명령문 쓸때 대/소문자는 상관없음)
PROC TABULATE data=a1;
class capital medical_type subject;
tables all medical_type subject, all capital*(N rowPCTN); /*행의 합=100%*/
run;
*옵션추가하기.
*①출력되는 결과에 대한 '이름'을 설정할 수 있다. (ex. n=빈도, 행의 합=(가로or세로)%)
*②결측값에 대한 표시 설정. (ex. 결측값은 0으로 표시)
-tables문 작성 후 /misstext='결측값으로 표시하려는 값' ;
PROC TABULATE data=a1;
class capital medical_type subject;
tables all medical_type subject
, all capital*(N='빈도' rowPCTN='가로%' colPCTN='세로%') /misstext='0';
run;
>> 옵션추가 전/후 출력 결과 비교. (결과표가 길어 중간에 생략하였습니다.)
3) 조건에 맞는 빈도표 출력하기. (FREQ함수와 동일하게 where문을 사용!)
ex. 요양기관 종별의 종류 중 "의원"과 "종합병원"의 세부과목은 어떻게 분류되어있는지 확인해보자.
PROC TABULATE data=a1 ;
where medical_type in ('의원','종합병원');
class capital medical_type subject;
tables all medical_type*subject, all capital*(N='빈도' colPCTN='%') /misstext='0' ;
run;
출력결과를 보면, 현재 데이터는 종합병원은 모두 '해당사항없음'으로, 의원은 24개의 세부과목으로 코딩되어 있음을 확인 할 수 있다. 그리고 의원의 경우 수도권/비수도권 모두 일반의, 내과, 이비인후과 순으로 많음을 알 수 있다.
이렇게 [PROC TABULATE]는 한개의 테이블에서 조건에 맞는 빈도와 백분율을 편리하게 출력할 수 있다.
여기에 앞에서 작성했던 VAR함수도 함께 넣어 빈도, 백분율, 평균, 표준편차 등도 추가해서 한꺼번에 출력이 가능하다.
CLASS문에는 TABLE문에 적을 변수가 모두 들어가야함을 잊지 말자~!
- 끝 -
'공부중 > 1 SAS' 카테고리의 다른 글
SAS 날짜변수, (1-4)분기로 구분하기 [QTR] (0) | 2020.03.15 |
---|---|
SAS 날짜변수 변환 (문자 < > 숫자) (0) | 2020.03.04 |
SAS 평균값 정리 [PROC TABULATE] (0) | 2020.02.02 |
SAS [PROC CONTENTS] - 데이터셋 변수확인하기 (0) | 2020.01.12 |
SAS 빈도분석 [PROC FREQ] -2 (0) | 2020.01.09 |