Macro-frq_missing

SAS Macro

计算变量缺失情况

Macro

SAS Macro 计算变量的填充率/缺失个数

在有的是时候,我们需要知道数据集中的每个变量缺失情况及占比。

小编的这个Macro可以实现数据集里的每个变量缺失情况的统计。

%frq_missing(inds=如何需要check的数据集,outds=缺失结果输出的数据集,sasver=SAS语言的版本/CN 或EN);

/*简体中文下运行结果*/

libname final "C:\Users\Administrator\Desktop\ftd";

%frq_missing(inds=final.final,outds=out1,sasver=CN);

/*英文下运行结果*/

libname final "C:\Users\Administrator\Desktop\ftd";

%frq_missing(inds=final.final,outds=out1,sasver=EN);

如下Macro Code

%macro frq_missing(inds,outds,sasver=CN);

%global _missvarlist _nmissvarlist;

options nonotes;

proc format;

value num_f . = "0" low-high = "1" ;

value $char_f " " = "0" other = "1" ;

run;

ods html close;

ods output onewayfreqs=&outds.;

proc freq data=&inds. ;

table _ALL_ /missing ;

format _numeric_ num_f. _character_ $char_f.;

run;

ods output close;

data _Tem_1(rename=(frequency=frequency1 percent=percent1 )) _Tem_2(rename=(frequency=frequency2 percent=percent2 ));

length variable $50;

set &outds.;

%if &sasver.=CN %then %do;

variable = upcase(scan(Table,2,"“"));%end;

%else %do;

variable = upcase(scan(Table,2," "));%end;

value = max(of F_:);

if value = 0 then output _Tem_1;

if value = 1 then output _Tem_2;

keep variable frequency percent ;

run;

proc sort data=_Tem_1 out=_Tem_1 sortseq=linguistic(numeric_collation=on);by variable ;quit;

proc sort data=_Tem_2 out=_Tem_2 sortseq=linguistic(numeric_collation=on);by variable ;quit;

data &outds.;

retain variable Total frequency1 frequency2;

merge _Tem_1 _Tem_2;

by variable;

if missing(frequency1) then frequency1=0 ;

if missing(frequency2) then frequency2=0 ;

Total=frequency1+frequency2;

%if &sasver.=CN %then %do;

label frequency1="缺失个数" frequency2="非空个数" Total="观测个数" variable="变量名称";

%end;

%else %do;

label frequency1="MISSING(N)" frequency2="NOT MISSING(N)" Total="OBS(N)" variable="VARNAME";

%end;

keep variable Total frequency1 frequency2;

run;

proc sql noprint;

select variable into:_missvarlist separated by " " from &outds.(where=(frequency1=Total)) ;

select variable into:_nmissvarlist separated by " " from &outds.(where=(frequency2=Total)) ;

quit;

proc delete data=_Tem_1 _Tem_2;quit;

options notes;

%put NOTE: ALL OBS IS MISSING VAR(MACRO VAR :_missvarlist):&_missvarlist.;

%put NOTE: ALL OBS IS NOT MISSING VAR (MACRO VAR :_nmissvarlist):&_nmissvarlist.;

ods html ;

%mend;

本文分享自微信公众号 - SAS程序分享号号号(xiaocgn),作者:setup~

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深入解剖SDTM-Define.XML

    本文小编将为大家分享并讲解SDTM标准define.xml的内部构造及参数介绍。以便大家制作SDTM的define.xml或参照define.xml制作适合自己...

    Setup
  • SAS-一个小程序实现自动插入空白行~

    前几天一个朋友问我如何快速的在数据集中指定位置插入空白记录。当时我也是愣了一下,以前实现输出制作排版都是在proc report输出时进行设置的,还真没在数据集...

    Setup
  • SAS-关于日期处理的那些事...

    在编程过程中,日期、时间的处理是很常见的,SAS中也有很多日期处理相关的语法或函数,那么今天就与小编一起来看看,针对日期、时间的哪些编程的语句....

    Setup
  • AI 与 5G 在无线通信的应用

    聊起 AI,画面都充斥着机械语言:精密高级的芯片,光怪陆离的智能产业……你眼中的 AI 有什么样的能力?能给传统行业带来哪些变革与发展?基于此,云加社区联手知乎...

    云加社区
  • MongoDB数据库基本操作

    用户3461357
  • Spring Boot和Spring Cloud学习资源推荐

    最近创建的交流群里,很多童鞋都在找关于Spring Boot和Spring Cloud的学习资源,整理了一些比较好的学习资源,分享一下。

    Java后端技术
  • NPM报错终极大法

    lilugirl
  • Facebook 开源 SlowFast:基于双帧速率分治轻量视频识别模型

    SlowFast 是一个新型视频识别方法,它可以模仿灵长类视觉中的视网膜神经运作原理,同时以慢速帧频和快速帧频提取视频中的有效信息,从而提高动作分类及动作识别效...

    AI研习社
  • Waymo无人车正在学习遇到警车/消防车/救护车怎么办

    王瀚宸 编译整理 量子位 报道 | 公众号 QbitAI ? 在特殊情况下,无人车该如何应对? 最近,Waymo的无人车在美国亚丽桑亚州的钱德勒市就展开了一项针...

    量子位
  • 深度学习: greedy layer-wise pre-training (逐层贪婪预训练)

    每次只训练网络中的一层,即我们首先训练一个只含一个隐藏层的网络,仅当这层网络训练结束之后才开始训练一个有两个隐藏层的网络,以此类推。

    JNingWei

扫码关注云+社区

领取腾讯云代金券