【问题标题】:R - set group_by / summarize values as new column on group members [duplicate]R-将group_by /汇总值设置为组成员的新列[重复]
【发布时间】:2018-05-14 02:46:16
【问题描述】:

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

假设我有一个tibble,如下所示:

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

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

我现在如何将此结果设置为整个组的新列?
IE。导致

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

【问题讨论】:

    标签: r dplyr tidyverse tibble


    【解决方案1】:

    可以简单地在 group by 之后使用 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
    

    【讨论】:

    • 只见树木不见森林,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 2021-10-03
    • 2022-01-12
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2017-01-14
    相关资源
    最近更新 更多