求助:如何在SAS中按组织分组统计缺失变量的数量
SAS按ORG分组统计缺失变量数量解决方案
方法:数组批量处理+分组汇总
针对200个变量的场景,用数组批量处理是最高效的实现方式,步骤如下:
- 计算每行的缺失变量个数
创建临时数据集,通过数组遍历目标变量,统计单条观测的缺失值数量:
data temp; set your_dataset; /* 替换为你的实际数据集名称 */ /* 定义数组:若变量为连续命名的数值型,用Var1-Var200;若要包含所有数值型变量(排除字符型ORG),用_NUMERIC_ */ array target_vars[*] Var1-Var200; row_missing = 0; do i = 1 to dim(target_vars); if missing(target_vars[i]) then row_missing + 1; end; drop i; run;
- 按ORG分组汇总总缺失数
通过PROC SQL或PROC SUMMARY按ORG分组求和,得到每个组织的缺失变量总数:
方式一:PROC SQL
proc sql; create table missing_count as select ORG, sum(row_missing) as "Count of Missing Var" from temp group by ORG; quit;
方式二:PROC SUMMARY(简洁汇总输出)
proc summary data=temp nway; class ORG; var row_missing; output out=missing_count sum="Count of Missing Var"; run;
关键说明
missing()函数可识别SAS中所有类型的缺失值(数值型.、字符型空格等),兼容性更强。- 若ORG是数值型变量,需避免使用
_NUMERIC_,要明确指定统计的变量列表(如Var1-Var200),防止将ORG纳入统计范围。 - 若每个ORG仅对应一行观测,分组求和后的结果即为该行的缺失变量数,与示例输出完全匹配。
内容的提问来源于stack exchange,提问作者AJYAss
相关产品推荐
相关产品推荐

