【问题标题】:Explain ungroup() in dplyr在 dplyr 中解释 ungroup()
【发布时间】:2018-01-25 15:46:59
【问题描述】:

如果我正在处理一个数据集并且我想对数据进行分组(即按country),计算一个汇总统计(mean())然后ungroup()data.frame 得到一个数据集原始尺寸 (country-year) 和列出每个国家/地区平均值的新列(重复 n 年),我将如何使用 dplyr 做到这一点? ungroup() 函数不会返回具有原始尺寸的 data.frame

gapminder %>%
    group_by(country) %>%
    summarize(mn = mean(pop)) %>%
    ungroup() # returns data.frame with nrows == length(unique(gapminder$country))

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    ungroup() 如果你想做类似的事情会很有用

    gapminder %>%
    group_by(country) %>%
    mutate(mn = pop/mean(pop)) %>%
    ungroup() 
    

    您想要使用整个组的统计信息进行某种转换。在上面的示例中,mn 是人口与组平均人口的比率。当它未分组时,对其调用的任何进一步的突变都不会使用分组进行聚合统计。

    summarize 会自动缩小尺寸,并且无法恢复。也许你想做

    gapminder %>%
    group_by(country) %>%
    mutate(mn = mean(pop)) %>%
    ungroup() 
    

    这会创建 mn 作为每个组的平均值,并为该组中的每一行复制。

    【讨论】:

    • 是的!总结是什么让我卡住了,太好了,非常感谢!
    【解决方案2】:

    summarize() 减少了行数。如果您不想更改行数,请使用mutate() 而不是summarize()

    【讨论】:

      猜你喜欢
      • 2018-09-05
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2018-03-28
      • 1970-01-01
      相关资源
      最近更新 更多