Data Analysis/SAS EG

[SAS] 레코드, 행의 수 세기

AubreyJeong 2021. 6. 7. 20:00

전체 SAS obs 개수, 데이터 레코드(=행)의 개수 세기 : PROC SQL 이용

 

데이터 프로시저 PROC DATA로도 가능하지만 PROC SQL을 이용하는편이 훨씬 간단하다. 

전체 데이터 정보를 보기 위한 PROC CONTENTS로도 확인가능하다!

PROC SQL;
  CREATE TABLE count AS 
  SELECT
  COUNT(*) AS cnt
  FROM test;
QUIT;
DATA count (KEEP = cnt); /* KEEP= : 변수cnt만을 데이터셋으로 보존 */
  * 데이터 세트 "test"를 불러온다; 
  SET test END = last; /* END = : 지막 obs를 읽어들일 때의 동작 설정 */ 
  
  * RETAIN 문은 이전 obs 변수의 cnt 값을 유지; 
  RETAIN cnt 0; 
  
  * 1 obs를 불러올 때마다 cnt +1; 
  cnt + 1; 
  
  * 마지막 obs 데이터 세트만 "count"출력; 
  IF last; 
 RUN;

 

카테고리형 변수의 값의 종류에 따른 레코드(=행)의 개수 세기 : GROUP BY 추가

PROC SQL;
  CREATE TABLE count AS 
  SELECT
  category,COUNT(*) AS cnt
  FROM test
  GROUP BY category;
QUIT;
DATA count(KEEP=cnt1 cnt2 cnt3);
  SET test END=last;   
  RETAIN cnt1 0 cnt2 0 cnt3 0;
  
  IF      category=1 THEN cnt1+1;
  ELSE IF category=2 THEN cnt2+1;
  ELSE IF category=3 THEN cnt3+1;
  
  IF last;

RUN;

'Data Analysis > SAS EG' 카테고리의 다른 글

[SAS] MACRO ① : Macro 사용 목적과 기능  (0) 2021.06.14
[SAS] 단일 IF  (0) 2021.06.11
[SAS] PUT, INPUT  (0) 2021.06.09
[SAS] Format, Informat  (0) 2021.06.08
[SAS] proc contests, proc freq 데이터셋 확인하기  (0) 2021.06.07