SAS 統計某個資料集各個欄位頻數,並彙集到一個表中
阿新 • • 發佈:2018-12-12
/*統計表的欄位*/ PROC CONTENTS DATA=SASHELP.CLASS NOPRINT OUT=CA(KEEP=NAME); RUN; /*提取表的變數名*/ PROC SQL NOPRINT; SELECT NAME INTO:A SEPARATED BY ' ' FROM CA; RUN; QUIT; %LET I=1; /*計算各個變數的頻數,並存放在一個數據集中*/ %MACRO M_A(); PROC FREQ DATA=SASHELP.CLASS; %DO %UNTIL(%SCAN(&A.,&I,'')=); %LET NI=%SCAN(&A,&I,' '); TABLES &NI/MISSING OUT=&NI(RENAME=(&NI=NAME)) NOPRINT; %LET i = %eval(&i.+1); %PUT "&I.=" &NI.; %END; RUN; %LET I=1; %DO %UNTIL(%SCAN(&A.,&I,'')=); %LET NI=%SCAN(&A,&I,' '); DATA &NI.; LENGTH VAR $30. VAL $40.; SET &NI.; VAR="&NI."; VAL=CATS(NAME,''); DROP NAME; RUN; PROC APPEND BASE=D DATA=&NI.; RUN;%LET i = %EVAL(&i.+1); %PUT "&I.=SSSSSSS" &NI.; %END; PROC PRINT DATA=D; RUN; %MEND; %M_A();