R NAs的问题
我有一个像这样的数据集R NAs的问题,r,na,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 2
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))
我不明白为什么以下方法不起作用:
> length( dat$koen[dat$koen == 1] )
[1] 8
这应该是6
长度(dat$koen[dat$koen==2])
[1] 四,
这应该是2
我可以做到以下几点:
> length( which( dat$koen == 1 ) )
[1] 6
> length( which( dat$koen == 2 ) )
[1] 2
我的数据集很大,所以我需要知道我在做什么,我不明白这两个表达式之间的区别
非常感谢您的帮助。删除NA,以下代码可帮助您:
length(na.省略(dat$koen[dat$koen==1]))
或者也可以通过以下方式完成:
长度(dat$koen[其中(!is.na(dat$koen[dat$koen==1])))
如果这不起作用,请正确解释您的问题。您应该知道的是,您不能将任何内容(
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] 6
试着运行代码的较小部分,例如,只运行
dat$koen==1
,然后dat$koen[dat$koen==1]
,那么你应该能够看到为什么length
说明了它的作用……任何与NA
的逻辑比较都会给出NA
,例如:NA==1
是NA
> length(dat$koen[dat$koen==1 & !is.na(dat$koen)])
[1] 6