我有一个像
这样的数据集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
我算了NAs:
isna <- sum(is.na(dat$koen))
给出了
> isna
[1] 2
我不明白为什么以下不起作用:
> length( dat$koen[dat$koen == 1] )
[1] 8
这应该是6。
长度(dat $ koen [dat $ koen == 2]) [1] 4
这应该是2。
我可以使用以下方法:
> length( which( dat$koen == 1 ) )
[1] 6
> length( which( dat$koen == 2 ) )
[1] 2
我的数据集很大,所以我需要知道,我在做什么,而且我不明白这两个表达式之间的区别。
非常感谢任何帮助。
答案 0 :(得分:5)
删除NA,以下代码可帮助您:
length(na.omit(dat$koen[dat$koen==1]))
或者可以通过以下方式完成:
length(dat$koen[which(!is.na(dat$koen[dat$koen==1]))])
如果这不起作用,请正确解释您的问题
答案 1 :(得分:3)
你应该知道的是,你不能将任何东西(NA
)与某些东西(1
在这里)进行比较。即,当算法执行此操作NA==1
时,它不会返回{ {1}}但会返回FALSE
。这就是你得到的原因:
NA
请改为尝试:
> length( dat$koen[dat$koen == 1] )
[1] 8