在dplyr中解释ungroup()

Emi*_*ily 2 r dplyr

如果我有一个数据集工作,我想对数据进行分组(即通过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))
Run Code Online (Sandbox Code Playgroud)

MrF*_*ick 5

所述summarize()减少的行数.如果您不想更改行数,则使用mutate()而不是summarize().


Max*_*cia 5

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

gapminder %>%
group_by(country) %>%
mutate(mn = pop/mean(pop)) %>%
ungroup() 
Run Code Online (Sandbox Code Playgroud)

您想在其中进行某种转换,以使用整个组的统计信息。在上面的示例中,mn是人口与组平均人口的比率。当取消分组时,对其进行任何其他更改都不会将分组用于汇总统计信息。

summarize自动缩小尺寸,没有办法将其恢复。也许你想做

gapminder %>%
group_by(country) %>%
mutate(mn = mean(pop)) %>%
ungroup() 
Run Code Online (Sandbox Code Playgroud)

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