尝试使用na.rm = TRUE来排除图输出中的NA

时间:2017-10-16 19:22:06

标签: r na.rm

我正在使用此代码来计算不同值组的均值。

> means <- aggregate(jots.xpc.txt$Cfxtn32, by=list(jots.xpc.txt$Tx), mean)
> means
   Group.1          x
1   C1_Mac 0.04957707
2    C1_MH 0.14721646
3   C2_Mac 0.01389217
4    C2_MH 0.03080142
5   X1_Mac 0.04871321
6    X1_MH 0.15913916
7   X2_Mac 0.07951835
8    X2_MH 0.08354484
9  XB1_Mac 0.05090939
10  XB1_MH 0.22035204
11 XB2_Mac 0.05053910
12  XB2_MH         NA

但是我想从数据中排除NA,所以我使用了na.rm = TRUE命令。

> means <- aggregate(jots.xpc.txt$Cfxtn32, by=list(jots.xpc.txt$Tx), mean(na.rm=TRUE))
  

mean.default中的错误(na.rm = TRUE):
        论证&#34; x&#34;缺少,没有默认

有人能告诉我我做错了吗?

2 个答案:

答案 0 :(得分:2)

aggregate必须传递给...的{​​{1}}参数,以便aggregate可以将其传递给mean

> data1 <- data.frame(x = c(1,3,4,5,NA,7,NA,6), y = c('A','A','B','B','A','A','B','B'))
> 
> aggregate(data1$x, FUN = mean, by = list(data1$y))
  Group.1  x
1       A NA
2       B NA
> 
> 
> aggregate(data1$x, FUN = mean, by = list(data1$y), na.rm = T)
  Group.1        x
1       A 3.666667
2       B 5.000000

感谢gregor的解释。

答案 1 :(得分:0)

同样正是dplyr设计好处理的问题类型。所以你也可以这样做:

library(dplyr)

means <- jots.xpc.txt %>%
   group_by(Tx) %>%
   summarise(Cfxtn32_mean = mean(Cfxtn32, na.rm = TRUE))