我正在寻找一个更好的选择,直接在新列中的同一数据框中保存组意味着。我通常按以下步骤解决此问题。是否有可能在没有明确合并它们的情况下保存手段但是可以使用dplyr立即执行此操作?
data <- data.frame(group = rep(c("low","high"),2),
values = runif(n = 4, min = 0, max = 2))
data_mean <- data %>% group_by(group) %>% summarise (mean(values))
merge(data_mean, data)
group mean(values) values
1 high 0.2889459 0.07079697
2 high 0.2889459 0.50709475
3 low 0.7767188 0.93176182
4 low 0.7767188 0.62167588
答案 0 :(得分:3)
只需使用mutate
代替summarise
就可以做你想做的事情:
data %>%
group_by(group) %>%
mutate(mean = mean(values))
#Source: local data frame [4 x 3]
#Groups: group
#
# group values mean
#1 low 1.4017168 0.7478336
#2 high 0.8074821 1.1018971
#3 low 0.0939505 0.7478336
#4 high 1.3963122 1.1018971
注意:我的值与您的值不同,因为您没有使用set.seed
来表示随机数的重复性。
答案 1 :(得分:2)
您可以在基础R中使用tapply
within(data, means <- tapply(values, group, mean, na.rm=TRUE))
# group values means
# 1 low 1.1069518 1.515846
# 2 high 1.6729194 1.001568
# 3 low 0.8961838 1.515846
# 4 high 1.3587732 1.001568