【发布时间】:2017-08-29 23:03:07
【问题描述】:
在每个组中,我想找到两个子组的平均值。为了清楚起见,数据如下所示:
Group Val1 Val2 Val3
1 50 0.03 50.1
1 50.2 0.05 50.1
2 50.3 0.01 50.1
1 50 0.03 50.2
1 50.1 0.04 50.2
1 50 0.01 50.3
1 50 0.02 50.3
2 50.3 0.03 50.3
在 Val3 的每个组中,我想计算第 1 组中 Val2 的平均值和第 2 组中 Val2 的平均值。在某些情况下,对于 Val3,第 2 组中没有成员。这是我尝试的代码.
fileB.mean.dat <- tapply(combined.sorted.data[combined.sorted.data[,1] == 2,3], combined.sorted.data[combined.sorted.data[,1] == 2,4], mean)
我不知道如何在上面的代码中包含来检查是否有组 2 的成员,如果没有,则使 Val 3 的平均值为 0。换句话说,应该有一个代表 Group 的平均值Val 3 的每个值对应 1 和 2。
【问题讨论】:
-
aggregate(Val2 ~ Group + Val3, data = df, mean)将给出每组的平均值。但不会给你“缺失”的平均值(而且我不完全确定对不存在的数据使用平均值的好处?) -
我想绘制数据。因此,我希望在图中显示平均值(即使缺失数据的平均值为 0)。
-
缺失数据的均值为零仍然具有误导性。
-
您可以使用
tidyr::complete插入缺少的组合,例如library(tidyverse); df %>% complete(Group, Val3) %>% group_by(Group, Val3) %>% summarise_all(mean)
标签: r dataframe data-processing