본문 바로가기
공부중/1 SAS

SAS 빈도분석 [PROC FREQ] -2

by E__E 2020. 1. 9.

이어서 PROC FREQ의 또다른 자주쓰는 옵션들을 알아보자. 

 

1. 조건에 해당하는 빈도 확인 [where문]

 ex1. 사고유형(TYPE)이 무단횡단인 경우의 연도별 빈도

PROC FREQ DATA=CAR_ACCIDENT; 

 WHERE TYPE='무단횡단';

 TABLE YEAR; 

RUN;

연도별 무단횡단 사고 빈도

ex2. 사고유형(TYPE)이 무단횡단인 경우의 2015~2017년 빈도

PROC FREQ DATA=CAR_ACCIDENT; 

 WHERE TYPE='무단횡단'  and 2014<YEAR<2018 ;

 TABLE YEAR /NOROW NOCOL NOPERCENT ; 

RUN;

옵션(NOROW NOCOL NOPERCENT) 전/후

 

 

2. 변수값 확인하기(리스트로 보기) (/LIST , /CROSSLIST) 

 2차원 빈도표에서는 TABLE A*B의 결과가 행/열의 조합으로 출력이 된다. 

때문에 변수값이 많아 출력되는 행이 너무 길거나, 교차되는 빈도가 많이 없을 경우에는 2차원 빈도표로 보는것이 불편하다. 주로 문자변수의 코딩값이나 숫자 조합을 확인할때 사용하면 편리하다. 

 

 ex1 사고지역관리번호(accident_no)와 사고유형(TYPE)

PROC FREQ DATA=CAR_ACCIDENT;

 TABLES accident_no*TYPE/LIST

RUN;

/LIST 옵션 적용 전(왼쪽), 후(오른쪽)

2차원 빈도표(TABLES accident_no*type) 결과에서는 0인값들도 모두 출력되어 보기에 다소 지저분하다. 

LIST 옵션을 추가해서 사고번호가 있는 사고유형의 빈도만 깔끔하게 출력할 수 있다. 

 

 

 ex2. 그룹별로 빈도 확인 ( /CROSSLIST ) 

  나눠서 보고자 하는 변수를 먼저 써준다. 

(아래 왼쪽 결과) 사고번호별 사고종류 

PROC FREQ DATA=CAR_ACCIDENT;

 TABLES  accident_no*type/CROSSLIST
RUN; 

(아래 오른쪽 결과) 연도별 사고종류 
PROC FREQ DATA=CAR_ACCIDENT;
TABLES  accident_no*YEAR/CROSSLIST;
RUN; 

/CROSSLIST 결과

 

3. 출력결과 데이터셋에 저장 (/OUT=  ) 

 빈도분석 결과를 하나의 데이터셋으로 저장 할 수 있다. 

PROC FREQ DATA=CAR_ACCIDENT ;

 TABLES YEAR*TYPE /NOROW NOCOL NOPERCENT OUT=TYPE_N ;

RUN;

PROC FREQ DATA=CAR_ACCIDENT NOPRINT ;   

 TABLES YEAR*TYPE / OUT=TYPE_N1 ;

RUN;

이때 /MISSING NOROW NOPERCENT 등의 옵션은 결과창에 대한 것으로, 저장되는 데이터셋의 형태는 동일하다.

 > 변수, 빈도 수, 전체 빈도의 백분율이 생성(저장)된다. 

결과창 출력이 되고 TYPE_N 데이터셋이 생성되었다. 
데이터셋 TYPE_N

 

데이터가 크거나, 프로그램을 여러번 실행시켜야 하는 경우 결과창에 출력하는데에도 시간이 소요된다.

(가끔은 멈추기도..) 

NOPRINT를 작성하여 결과창(Results viewer) 출력없이 데이터셋만 저장하여 시간을 줄일 수 있다.

이때에는 로그창을 통해 제대로 실행 되었는지를 꼭 확인하도록 한다. 

로그창 결과

 

 

명령문 작성하면서 중간에 한번씩 저장하는것 잊지말기! 

 

* 자료출처: 도로교통공단_교통사고 정보 (공공데이터포털) 

'공부중 > 1 SAS' 카테고리의 다른 글

SAS 평균값 정리 [PROC TABULATE]  (0) 2020.02.02
SAS [PROC CONTENTS] - 데이터셋 변수확인하기  (0) 2020.01.12
SAS 빈도분석 [PROC FREQ] -1  (0) 2019.12.31
SAS 탐색기 옵션  (0) 2019.10.01
SAS 문자추출 [SUBSTR]  (0) 2018.12.22