我正在使用此代码来计算不同值组的均值。
> 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;缺少,没有默认
有人能告诉我我做错了吗?
答案 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))