-1

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

> 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) 中的错误:
缺少参数“x”,没有默认值

有人可以告诉我我做错了什么吗?

4

2 回答 2

2

na.rm=T必须传递给aggregate...参数,以便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的转述。

于 2017-10-16T19:28:09.580 回答
0

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

library(dplyr)

means <- jots.xpc.txt %>%
   group_by(Tx) %>%
   summarise(Cfxtn32_mean = mean(Cfxtn32, na.rm = TRUE))
于 2017-10-16T19:33:14.603 回答