R - 将group_by /汇总为组成员的新列

时间:2017-11-30 08:29:23

标签: r dplyr tidyverse tibble

如何应用/设置group_by + summarize的结果作为该组所有观察结果的新变量?

我们假设我有一个tibble如下:

foo <- tribble(
    ~x, ~y, 
     1, 1, 
     1, 5, 
     1, 2,  
     2, 1, 
     2, 7, 
     2, 3)

x表示群组,y表示变量 我知道我可以通过max获得每个小组的foo %>% group_by(x) %>% summarize(max(y)) - 。

如何将此结果设置为整个组的新列? 即导致

~x, ~y, ~max-y
 1,  1,  5
 1,  5,  5
 1,  2,  5
 2,  1,  7
 2,  7,  7
 2,  3,  7

1 个答案:

答案 0 :(得分:2)

可以在分组后简单地使用mutate并指定函数:

foo %>%
  group_by(x) %>%
  mutate(max_y = max(y))
#output:
# A tibble: 6 x 3
# Groups:   x [2]
      x     y max_y
  <dbl> <dbl> <dbl>
1     1     1     5
2     1     5     5
3     1     2     5
4     2     1     7
5     2     7     7
6     2     3     7