京公网安备 11010802034615号
经营许可证编号:京B2-20210330
关于缺失统计函数cmiss、nmiss中的小细节
在数据清理中统计缺失变量的缺失的时候,我们经常会用到cmiss函数和nmiss函数,这两者都是用来对缺失个数进行统计,两者区别就在于前者既能用于数值型也能用于字符型,而nmiss则只能用于数值型。
在使用这两个函数的过程中,我们往往会发现在统计缺失个数时候,经常出现实际计算出来的值要大于缺失值的个数,这是为什么呢?
举个简单的例子:
data tmp;
v1=.;v2='';x=3;output;
v1=1;v2='A';x=2;output;
v1=3;v2='';x=.;output;
v1=.;v2='B';x=2;output;
run;
我们得到四行数据,如下所示:
接下来用cmiss函数进行行缺失个数的统计:
data tmp1;
set tmp;
sum_miss=cmiss(of _all_);
run;
最终得到如下结果:
我们发现sum_miss的每一行值都比实际值要大1,为了了解这个过程,我们来通过put语句展示一下过程:
data tmp1;
set tmp;
put _all_;
sum_miss=cmiss(of _all_);
run;
查看日志:
我们发现在统计行缺失时,由于使用的_all_,所以把sum_miss变量也包含进去了,所以才会产生如上结果。
那么为了避免出现这种结果,我们可以用两种办法:
第一种:对sum_miss赋值,例如:
data tmp1;
set tmp;
sum_miss = 0;
sum_miss=cmiss(of _all_);
run;
第二种:将变量列出来,例如:
data tmp1;
set tmp;
sum_miss=cmiss(v1,v2,x);
run;
但是通常情况下,我们还是习惯用第一种方法,因为有时候变量太多,我们又不希望把他们都列出来,所以喜欢采用_all_来表示所有变量。
有童鞋也许会问了,如果我变量很多,但是我又只想对一部分变量进行行缺失统计,那么我该怎么做呢?
方法也很多:
例如可以选择第二种方法,只是需要将你要选择的那些变量用宏变量把他们包含成一列:sum_miss = cmiss(of ¯o_var.);其中宏变量macro_var = v1 v2 x;。
例如可以选择第一种方法,只是在set数据集时,将需要的都keep,前提还是需要将他们用宏变量包含城一列。
等等,根据具体情况,只要灵活结合宏,往往我们都能得到事半功倍的效果。
另外使用cmiss还要一个地方需要注意:
在将cmiss与%sysfunc结合使用时,需要注意对于宏变量是缺失的,我们要用(.)来表示,而不能用空格来表示,例如:
%let a = ;
%let b = hello;
%let c = %sysfunc(cmiss(&a.,&b.));
%put c = &c.;
我们可以看到日志中如下所示:
虽然最终得到了正确的结果,但是程序还是会报错。
那么为了消除这个error,我们需要在宏变量后面再加上一个点号,如下所示:
%let a = ;数据分析师培训
%let b = hello;
%let c = %sysfunc(cmiss(&a..,&b..));
%put c = &c.;
最终在日中中,我们会发现这个error已经去掉了。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
很多数据分析师画过趋势图、做过业绩预测,但当被问到“这个月销售额增长20%,到底是长期趋势自然增长,还是促销活动的短期 ...
2026-08-21在数据分析与数据可视化工作中,直方图是展示数据分布特征、离散程度、集中区间的核心图表,能够直观呈现数值数据的频次分布规律 ...
2026-08-20在数据分析领域有一句核心准则:垃圾数据进,垃圾数据出。数据清洗是数据分析、数据建模、数据可视化之前的必经前置工序,也是保 ...
2026-08-20 很多数据分析师做过按月份的销售额趋势图,画过按天的流量折线图,但当被问到“时间序列和普通数据有什么本质区别”“季节性 ...
2026-08-20在Python数据分析与数据清洗工作中,Pandas是最核心的数据处理库,DataFrame是结构化数据的标准存储格式。在实时数据采集、循环 ...
2026-08-19在零售行业大数据分析与精细化运营领域,纸尿裤旁摆放啤酒是最经典、最具代表性的商业案例。两种看似毫无关联的商品,一个是婴幼 ...
2026-08-19 很多数据分析师能熟练地计算指标、搭建标签体系,但当被问到“画像到底在解决什么问题”“画像和标签是什么关系”“画像如何 ...
2026-08-19在数据分析、业务监控、质量检测与风险管控工作中,数据波动性是衡量数据稳定性、业务健康度、结果可信度的核心依据。数据波动代 ...
2026-08-18很多分析师在设计标签时思路清晰,但真到落地环节却面临“数据在手,不知如何转化为可用标签”的困境:或因加工方式选择不当导致 ...
2026-08-18在数据分析、业务评价、产品评级、用户分层与综合决策场景中,单一指标往往无法全面、客观地评价事物整体水平。现实中的评价对象 ...
2026-08-18在数理统计、假设检验、数据分析与机器学习领域中,卡方分布(χ²分布)是继正态分布、t分布之后最重要的连续型概率分布之一。 ...
2026-08-17在Python数据清洗、文本校验、账号密码规则校验、脏数据过滤、字符串规整化处理中,正则表达式是最高效、最常用的文本匹配工具。 ...
2026-08-17 很多分析师每天和数据打交道,但当被问到“标签是什么”“标签和指标有什么区别”“标签体系如何设计”时,却常常答不上来。 ...
2026-08-17手游行业具备用户迭代快、竞争激烈、用户粘性易流失的典型特征。随着新游持续上线、玩家审美升级、玩法疲劳等问题出现,存量用户 ...
2026-08-14在数字化产品运营、商业数据分析、业务增长管理中,零散的指标统计无法支撑系统性的业务决策。单一的点击率、转化率、销量数据只 ...
2026-08-14 很多数据分析师每天都在写SQL,但当被问到“数据查询语言(DQL)的本质是什么”“SELECT语句中各子句的书写顺序与实际执行顺 ...
2026-08-14在数据库数据分析、数据清洗、报表统计与业务查询场景中,日期时间是最高频、最核心的基础字段。数据库中存储的日期格式多样,包 ...
2026-08-13在数据统计分析与数据清洗工作中,箱线图是一种简洁高效、客观性强的数据可视化图表,能够直观呈现数据集的分布特征、离散程度和 ...
2026-08-13 很多数据分析师写过无数个SELECT查询,但当被问到“如何新建一张表来固化中间数据”“创建视图和创建物理表有什么区别”“视 ...
2026-08-13在自动化办公、数据采集、定时统计、日志清理、系统监控等场景中,程序往往需要按照固定时间间隔重复执行指定任务,这种运行机制 ...
2026-08-12