问题描述
我对2019年至2050年的不同地区和充电器类型有一些电动汽车充电容量预测。我想对整个区域中的值求和并按充电器类型分组,如下所示:
df %>%
group_by(ChargerType) %>%
summarise(sum2019 = sum(df$`2019`))
但是我想在2019年到2050年的所有时间里都这样做。这可以单独完成,但非常繁琐,我敢肯定有一种很好的方法可以一次完成所有工作!
供您尝试的示例数据如下所示:
Area <- c(1,1,2,3,3)
ChargerType <- c("Domestic","Public","Fast","Domestic","Fast")
`2019` <- c(0.1,0.3,0.5,0.1,0.2,0.1)
`2020` <- c(0.2,0.4,0.6,0.2)
`2021` <-c(0.4,0.8,0.3)
df <- data.table(Area,ChargerType,`2019`,`2020`,`2021`)
这个小例子可以为您提供帮助,显然直到2021年,但您随时可以创建更多数据!
希望您能提供帮助,确保在那里的某个人会很容易!
解决方法
您可以获取长格式的数据,并为每个sum
和列名ChargerType
获取值。
library(dplyr)
df %>%
tidyr::pivot_longer(cols = -c(Area,ChargerType)) %>%
group_by(ChargerType,name) %>%
summarise(sum = sum(value))
如果您有data.table
,则可以执行以下操作:
library(data.table)
dt <- melt(df,id.vars = c("Area","ChargerType"))
dt[,.(value = sum(value)),.(ChargerType,variable)]