/*TABULATE過程主要是輸出統計量表,對整個數據集中的數據的匯總
語法
PROC TABULATE DATA=<數據集名稱> <選項>;
CLASS <分類變量> </選項>;
VAR <分析變量>;
TABLE <<頁維表達式> <行維表達式> <列維表達式> </選項>;
KEYLABEL 統計量1="標簽1" 統計量2="標簽2";
LABEL 變量1="標簽" 變量2="標簽";
RUN;
其中
CLASS語句是給出分類變量
VAR語句指定分析變量,分析變量一般是數值型變量
統計量:NMISS 、N 、MEAN、 STD、MAX、MIN、RANGE、SUM、USS、CUSS、STDERR、CV、T、PRT、VAR、SUMWGT、PCTN(頻數百分數)、PCTSUM(和的百分數)
F=格式 說明輸出項的寬度和小數點數(F=6.2說明輸出6個字節寬度,小數點后兩位(默認是小數點后兩位))
*/
/*TABLE特別說明
其后跟的變量:若用空格相連,輸出是並列的;若用逗號相連,輸出的是匯總格式(行*列格式);若用*相連,輸出是交叉格式(從上到下)
其后的選項:
RTS=N;規定表格左上角行標題格的寬度,默認是1/4
BOX=變量名;格式為"字符串",規定放在行標題左上角空框的文本
MISSING='文本';將最多20個字符的文本輸出到包含默認值的格子
PRINTMISS;每一次變量標題被打印出來,打印分類變量的所有值,即使這些標題下的單元格沒有數據(沒數據的顯示為缺失)*/
/*代碼與例子*/
ods rtf file='D:\files\SAS典藏\SAS_skill\05@費率 _圖\feerate_table.doc';
OPTIONS NOCENTER ls=max ps=max;
LIBNAME S 'D:\files\SAS典藏\SAS_skill\05@費率 _圖';
DATA S.feerate_noerror_1(KEEP=ScoreCard_Type working_status CustomerLevel FeeRate);
SET S.feerate_noerror;
RUN;
/*匯總表*/
PROC TABULATE DATA=S.feerate_noerror_1;
CLASS CustomerLevel FeeRate;
TABLE CustomerLevel,FeeRate;
TITLE 'TABULATE匯總表';
RUN;

/*並排列表:TABLE CustomerLevel FeeRate;*/
PROC TABULATE DATA=S.feerate_noerror_1;
CLASS CustomerLevel FeeRate;
TABLE CustomerLevel FeeRate;
TITLE 'TABULATE 並排列表';
RUN;

/*交叉匯總表*/
PROC TABULATE DATA=S.feerate_noerror_1;
CLASS CustomerLevel FeeRate;
TABLE CustomerLevel*FeeRate;
TITLE 'TABULATE 交叉匯總表';
RUN;

PROC TABULATE DATA=S.feerate_noerror_1;
CLASS working_status CustomerLevel ScoreCard_Type;
TABLE working_status CustomerLevel ScoreCard_Type,N*F=6.0 PCTN;
TITLE '並列顯示:統計是否工薪、客戶等級、評分卡類型的頻數、百分比';
RUN;

/*按照客戶分級做數據集對比報表*/
PROC TABULATE DATA=S.feerate_noerror;
CLASS ScoreCard_Type working_status CustomerLevel;
TITLE "匯總表顯示:按照費率標准觀測值是否全覆蓋";
TABLE CustomerLevel,ScoreCard_Type*working_status*(N*F=6.0 PCTN);
RUN;

ods rtf close;
其中ods rtf file='D:\files\SAS典藏\SAS_skill\05@費率 _圖\feerate_table.doc';
ods rtf close;
將生成的表格保存在指定的word里
格式的設置,table的選項可以加
(1)rts=20.s設置BOX所在列的寬度,其他列的寬度可以通過N*F=20.2.設置輸出頻數所占字符。
(2)BOX='此處輸入內容';
(3)style={just=center background=white cellwidth=200}設置標題內容位置、背景顏色、字符寬度
(4)PRINTMISS 將缺失的類別輸出
(5)MISSTEXT=‘0’;將缺失的設置為0;
