You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SAS中删除缺失值占比超80%的表变量?

在SAS中删除缺失值占比≥80%的变量

直接按以下步骤操作即可:

1. 统计各变量的缺失率

用PROC MEANS快速统计每个变量的总观测数和缺失数,再转置计算缺失率:

/* 第一步:输出每个变量的总观测数和缺失数 */
proc means data=你的表名 n nmiss noprint;
    output out=缺失统计 n=总观测数 nmiss=缺失数;
run;

/* 转置统计结果,方便后续计算 */
proc transpose data=缺失统计 out=缺失率表(rename=(col1=总观测数 col2=缺失数)) name=变量名;
    var _numeric_ _character_; /* 同时处理数值型和字符型变量 */
run;

/* 计算缺失率,筛选出缺失率<80%的变量(这些是要保留的) */
data 缺失率表;
    set 缺失率表;
    缺失率 = (缺失数 / 总观测数) * 100;
    where 缺失率 < 80;
    /* 额外处理空表情况:如果总观测数为0,直接保留所有变量 */
    if 总观测数 = 0 then output;
run;

2. 生成要保留的变量列表

用PROC SQL把需要保留的变量名存入宏变量:

proc sql noprint;
    select 变量名 into :保留变量 separated by ' '
    from 缺失率表;
quit;

3. 生成清洗后的新表

用DATA步创建只保留筛选后变量的新表:

data 清洗后的数据;
    set 你的表名;
    keep &保留变量.;
run;

注意事项

  • 把代码里的你的表名替换成你实际使用的SAS表名称
  • 如果只需要处理某一类变量(比如只处理数值型),可以把PROC TRANSPOSE里的var _numeric_ _character_改成var _numeric_
  • 要是原表没有任何观测,代码里的判断会自动保留所有变量,避免报错

内容的提问来源于stack exchange,提问作者dingaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 15:10:41