如何在SAS Enterprise Guide中用SAS或PROC SQL统计二分类列的数量与占比?
在SAS Enterprise Guide中实现目标聚合的两种方法
假设你的原始表名为original_table,以下两种方法均可生成符合需求的结果表:
方法一:PROC SQL实现
通过条件计数和计算直接生成目标表,逻辑直观清晰:
PROC SQL; CREATE TABLE result_table AS SELECT COUNT(CASE WHEN TARGET = 0 THEN ID END) AS Q_0, COUNT(CASE WHEN TARGET = 1 THEN ID END) AS Q_1, CALCULATED Q_0 / COUNT(*) AS P_0 FORMAT=8.1, CALCULATED Q_1 / COUNT(*) AS P_1 FORMAT=8.1, 'XXX' AS COL1 FROM original_table; QUIT;
COUNT(CASE...):利用条件判断统计对应TARGET值的ID数量(因ID无重复,直接计数非空结果即可)CALCULATED关键字:复用已计算出的Q_0/Q_1值,避免重复统计总行数FORMAT=8.1:控制占比的小数位数,与示例输出格式匹配'XXX' AS COL1:直接生成固定值列
方法二:常规SAS DATA步实现
通过累加计数+最后一行计算的方式生成结果:
DATA result_table; SET original_table END=last_row; RETAIN Q_0 0 Q_1 0; IF TARGET = 0 THEN Q_0 + 1; ELSE IF TARGET = 1 THEN Q_1 + 1; IF last_row THEN DO; total = Q_0 + Q_1; P_0 = Q_0 / total; P_1 = Q_1 / total; COL1 = 'XXX'; FORMAT P_0 P_1 8.1; OUTPUT; END; DROP ID TARGET; RUN;
RETAIN:保留变量值,实现跨观测的计数累加END=last_row:标记数据集的最后一行,仅在此时计算占比并输出结果DROP:移除原始表中不需要的列,精简结果表结构
内容的提问来源于stack exchange,提问作者unbik
相关产品推荐
相关产品推荐

