如果我正在使用数据集,并且想对数据进行分组(即按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))

最佳答案

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

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

您想要在其中进行某种转换的方法,该方法使用整个组的统计信息。在上面的示例中,mn是人口与该组平均人口的比率。当取消分组时,对其进行任何进一步的更改都不会将分组用于汇总统计信息。
summarize会自动减小尺寸,并且没有办法将其取回。也许你想做
gapminder %>%
group_by(country) %>%
mutate(mn = mean(pop)) %>%
ungroup()

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

关于r - 在dplyr中解释ungroup(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48446816/

10-14 07:32