gpt4 book ai didi

R:让group_by和summary更高效

转载 作者:行者123 更新时间:2023-12-04 08:56:25 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Group by multiple columns and sum other multiple columns

(7 个回答)


12 个月前关闭。




我有一个名为 data 的数据集带列标题 Region , 2006 , 2007 ,依此类推,直到 2020 . region列给出了地区的名称,而年份列给出了当年的人口。例如 2006列出特定地区当年的人口,2007列出特定地区当年的人口,依此类推。
下面的代码给了我我想要的输出(它按地区显示了每年的总人口)。但是,键入此代码非常耗时。有没有办法让这段代码更高效并节省输入 15 行不同的时间?

newData <- data %>%
group_by(Region) %>%
summarise(totalPop2006 = sum(`2006`, na.rm = TRUE),
totalPop2007 = sum(`2007`, na.rm = TRUE),
totalPop2008 = sum(`2008`, na.rm = TRUE),
totalPop2009 = sum(`2009`, na.rm = TRUE),
totalPop2010 = sum(`2010`, na.rm = TRUE),
totalPop2011 = sum(`2011`, na.rm = TRUE),
totalPop2012 = sum(`2012`, na.rm = TRUE),
totalPop2013 = sum(`2013`, na.rm = TRUE),
totalPop2014 = sum(`2014`, na.rm = TRUE),
totalPop2015 = sum(`2015`, na.rm = TRUE),
totalPop2016 = sum(`2016`, na.rm = TRUE),
totalPop2017 = sum(`2017`, na.rm = TRUE),
totalPop2018 = sum(`2018`, na.rm = TRUE),
totalPop2019 = sum(`2019`, na.rm = TRUE),
totalPop2020 = sum(`2020`, na.rm = TRUE)
) %>%
ungroup() %>%
arrange(Region)
谢谢!

最佳答案

我们可以使用 summariseacross

library(dplyr)
data %>%
group_by(Region) %>%
summarise(across(`2006`:`2020`, ~ sum(., na.rm = TRUE),
.names = 'totalPop{col}'), .groups = 'drop') %>%
arrange(Region)

使用默认数据集“mtcars”
data(mtcars)
mtcars %>%
group_by(cyl) %>%
summarise(across(disp:wt, ~ sum(., na.rm = TRUE), .names = 'totalPop{col}'),
.groups = 'drop')
# A tibble: 3 x 5
# cyl totalPopdisp totalPophp totalPopdrat totalPopwt
# <dbl> <dbl> <dbl> <dbl> <dbl>
#1 4 1156. 909 44.8 25.1
#2 6 1283. 856 25.1 21.8
#3 8 4943. 2929 45.2 56.0

或在 base Raggregate
aggregate(. ~ Region, data[c('Region', 2006:2020)],
sum, na.rm = TRUE, na.action = NULL)

关于R:让group_by和summary更高效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63805963/

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