NAs的问题

时间:2013-12-05 12:02:26

标签: r na

我有一个像

这样的数据集
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

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

非常感谢任何帮助。

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