保存n因子意味着在r中的相同数据帧中

时间:2014-11-03 19:00:23

标签: r merge dplyr

我正在寻找一个更好的选择,直接在新列中的同一数据框中保存组意味着。我通常按​​以下步骤解决此问题。是否有可能在没有明确合并它们的情况下保存手段但是可以使用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

2 个答案:

答案 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