如何使用PROC SQL统计每个变量的缺失值?现有代码输出异常求解决
解决PROC SQL统计变量缺失值的问题
原代码的问题在于,count(UtgUtl_FlygSSEK_Pers is missing) 里的判断表达式会返回1(缺失)或0(非缺失),而count()函数会统计所有非缺失的结果——不管是1还是0,都会被算作有效项,所以最终输出的是符合WHERE条件的总观测数,而非缺失值数量。
可以通过以下两种方式修改代码:
方法一:用SUM函数统计缺失标记
利用SAS中布尔值(缺失判断的结果)为1/0的特性,直接用SUM累加缺失的次数:
PROC SQL; SELECT sum(UtgUtl_FlygSSEK_Pers is missing) AS Missing_Count FROM IBIS3_5 WHERE Exkl_UtgUtl_Flyg=1; quit;
或者用CASE语句更明确地标记缺失项:
PROC SQL; SELECT sum(case when UtgUtl_FlygSSEK_Pers is missing then 1 else 0 end) AS Missing_Count FROM IBIS3_5 WHERE Exkl_UtgUtl_Flyg=1; quit;
方法二:总观测数减去非缺失数
用count(*)得到符合条件的总观测数,减去count(UtgUtl_FlygSSEK_Pers)(统计非缺失的数量),差值就是缺失值的数量:
PROC SQL; SELECT count(*) - count(UtgUtl_FlygSSEK_Pers) AS Missing_Count FROM IBIS3_5 WHERE Exkl_UtgUtl_Flyg=1; quit;
内容的提问来源于stack exchange,提问作者Magnus
相关产品推荐
相关产品推荐

