首页 > 解决方案 > 仅基于变量值的空列 - SAS 数据集

问题描述

我有一个非常大的 SAS 数据集,其中包含超过 280 个变量,我需要根据变量值检索所有完整的 NULL 列。例如,我在这个数据集中有一个名为 Reported(只有值 Yes 和 No)的变量,我想根据值 No 找出这个数据集中所有完整的 Null 列。

有没有什么快速的方法可以在不为完整的 NULL 值写入所有列名的情况下找到它?

例如,如果我在表中有 4 个变量,

在此处输入图像描述

因此,根据上表,我希望看到 Var4='No' 这样的输出,并且只返回包含所有缺失值的列

在此处输入图像描述

这将帮助我识别在 Var4 值为“否”的情况下根本没有填充的变量

标签: sasstatisticsproc-sql

解决方案


注意 PROC FREQ 中的 WHERE 语句。

proc format;
   value $_xmiss_(default=1 min=1 max=1) ' '  =' ' other='1';
   value  _xmiss_(default=1 min=1 max=1) ._-.Z=' ' other='1';
   quit;

%let data=sashelp.heart;


proc freq data=&data nlevels;
   where status eq: 'A';
   ods select nlevels;
   ods output nlevels=nlevels;
   format _character_ $_xmiss_. _numeric_ _xmiss_.;
   run;

data nlevels;
   length TABLEVAR $32 TABLEVARLABEL $128 NLEVELS NMISSLEVELS NNONMISSLEVELS 8;
   retain NLEVELS NMISSLEVELS NNONMISSLEVELS 0;
   set nlevels;
   run;

推荐阅读