gpt4 book ai didi

r - Dplyr:同时汇总组和整个数据

转载 作者:行者123 更新时间:2023-12-04 02:36:21 24 4
gpt4 key购买 nike

我正在计算大型数据框中许多变量的摘要统计信息(它有 130 个变量)。我希望为我的所有数据计算每十年的汇总统计数据。我想避免写两次总结:一次用于分组,一次用于完整数据。我也使用 summarise_at,所以我的问题也适用于 summarise_at。

这是一个最小的示例,其中 summarise_at() 似乎有点过头了,但对于我的真实数据而言并非如此:

my.data <- data.frame(Date = as.Date(c('1981-04-09', '1983-02-01', '1992-10-19', '1996-11-22', '1987-05-15')),
decade = c('Eighties', 'Eighties', 'Nineties', 'Nineties', 'Eighties'),
price = c(10, 11, 17, 34, 12),
d.sector.Oil = c(0,0,1,1,1),
d.sector.Mines = c(1,1,0,0,0)) # An example dataframe
# Calculate summary statistics for each decade and each variable:
sumst.decades<- my.data %>% group_by(decade) %>% summarise(mean.price = mean(price))
sumd.decades<- my.data %>% group_by(decade) %>% summarise_at(vars(starts_with('d.sector.')), sum)

我的完整数据需要相同的摘要。我会重复上面的命令行,但没有“group_by”:

sumst<- summarise(my.data, mean.price = mean(price))
sumd<- summarise_at(my.data, vars(starts_with('d.sector.')), sum)

我希望不必写最后两行,但不知何故,dplyr 除了分组摘要之外,还给了我一个全局摘要。例如,如果有一个函数 group_by* 可以根据需要创建组并创建一个全局组。这样的事情存在吗?我希望我的问题很清楚。提前致谢。

最佳答案

Tidyverse 解决方案:

library(tidyverse)

my.data %>%
mutate(decade = as.character(decade)) %>%
bind_rows(., my.data %>% mutate(decade = as.character("All"))) %>%
group_by(decade) %>%
summarise_if(is.numeric, c("sum", "mean")) %>%
ungroup()

关于r - Dplyr:同时汇总组和整个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61676045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com