首页
学习
活动
专区
圈层
工具
发布

NAs问题
EN

Stack Overflow用户
提问于 2013-12-05 12:02:25
回答 2查看 107关注 0票数 4

我有一个数据集

代码语言:javascript
复制
dat
   ejer_id person_alder koen  aar
1        1            9    1 2011
2        2            9    1 2011
3        3            7    1 2011
4        4           94    1 2011
5        5           94    2 2011
6        6           93   NA 2011
7        7           93    1 2011
8        8           91    2 2011
9        9           91    1 2011
10      10           91   NA 2011

我数一数那批人:

代码语言:javascript
复制
isna <- sum(is.na(dat$koen))

这给

代码语言:javascript
复制
> isna
   [1] 2

我不明白为什么以下内容不起作用:

代码语言:javascript
复制
 > length( dat$koen[dat$koen == 1] )
[1] 8

这应该是6。

长度( dat$koendat$koen == 2)1 4

这个应该是2。

我可以做到以下几点:

代码语言:javascript
复制
> length( which( dat$koen == 1 ) )
[1] 6
> length( which( dat$koen == 2 ) )
[1] 2

我的数据集相当大,所以我需要知道我在做什么,我不明白这两个表达式之间的区别。

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

发布于 2013-12-05 12:27:46

删除NA,下面的代码帮助您:

length(na.omit(dat$koen[dat$koen==1]))

也可以通过以下方式进行:

length(dat$koen[which(!is.na(dat$koen[dat$koen==1]))])

如果这件事行不通,请解释清楚你的问题。

票数 5
EN

Stack Overflow用户

发布于 2013-12-05 12:50:47

您应该知道的是,您不能将nothing (NA)与某样东西(在这里的1)进行比较。也就是说,当算法执行此NA==1时,它不会返回FALSE,但它将返回NA。这就是你得到的原因:

代码语言:javascript
复制
 > length( dat$koen[dat$koen == 1] )
[1] 8

试一试:

代码语言:javascript
复制
 > length(dat$koen[dat$koen==1 & !is.na(dat$koen)])
[1] 6
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20399500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档