cmiss与nmiss函数的区别

本文介绍了cmiss和nmiss函数在统计缺失个数时的不同,cmiss适用于数值型和字符型数据,而nmiss仅适用于数值型数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cmiss与nmiss函数的区别: 两者都是用来对缺失个数进行统计,两者区别就在于前者既能用于数值型也能用于字符型,而nmiss则只能用于数值型。

The CMISS function does not convert any argument. The NMISS function converts all arguments to numeric values.
cmiss在计算缺失值的时候,不会对参数进行转换,而nmiss则会把所有的参数转换为数值然后来计算缺失值。

例1:
data survey;
    input id diet exer hours xwk $ educ $;
    total_miss=nmiss(diet,exer,hours,xwk,educ);
datalines;
1 1 . 1 A . 
1 . 2 B C 2
1 . D . . .
1 1 E F * .
2 . 9 & 3 .
2 5 9 2 4 .
2 . 3 . 5 3
3 2 . . . .
;

例2:
data survey;
    input id diet exer hours xwk $ educ $;
    total_miss=cmiss(diet,exer,hours,xwk,educ);
datalines;
1 1 . 1 A . 
1 . 2 B C 2
1 . D . . .
1 1 E F * .
2 . 9 & 3 .
2 5 9 2 4 .
2 . 3 . 5 3
3 2 . . . .
;

在使用这两个函数的过程中,我们往往会发现在统计缺失个数时候,经常出现实际计算出来的值要大于缺失值的个数,这是为什么呢?
举个简单的例子:
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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值