我有一个数据集
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我数一数那批人:
isna <- sum(is.na(dat$koen))这给
> isna
[1] 2我不明白为什么以下内容不起作用:
> length( dat$koen[dat$koen == 1] )
[1] 8这应该是6。
长度( dat$koendat$koen == 2)1 4
这个应该是2。
我可以做到以下几点:
> length( which( dat$koen == 1 ) )
[1] 6
> length( which( dat$koen == 2 ) )
[1] 2我的数据集相当大,所以我需要知道我在做什么,我不明白这两个表达式之间的区别。
任何帮助都是非常感谢的。
发布于 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]))])
如果这件事行不通,请解释清楚你的问题。
发布于 2013-12-05 12:50:47
您应该知道的是,您不能将nothing (NA)与某样东西(在这里的1)进行比较。也就是说,当算法执行此NA==1时,它不会返回FALSE,但它将返回NA。这就是你得到的原因:
> length( dat$koen[dat$koen == 1] )
[1] 8试一试:
> length(dat$koen[dat$koen==1 & !is.na(dat$koen)])
[1] 6https://stackoverflow.com/questions/20399500
复制相似问题