我试图总结一个表,该表具有N个日期列,这些列将始终存在于数据集的末尾。有没有一种方法可以总结最后N列,而不是按名称调用每一列?
df <- df %>% group_by(Project) %>% summarise(???)
项目 | ||
---|---|---|
1234 | 5678 | |
1234 | 5678 |
基本R解决方案。
df <- data.frame(
Project = c(1234,5678,1234,5678),
Sep = c(4,10,23,8),
Oct = c(5,11,1,16),
Nov = c(6,5,87,8)
)
t(sapply(split(df, df$Project), function(x) apply(x[,-1L], 2, sum)))
输出
Sep Oct Nov
1234 27 6 93
5678 18 27 13
使用summarise
和across
进行索引可能有点麻烦,因为索引还必须考虑分组列。一种更简洁的方法是首先select
感兴趣的列,然后进行group_by
并使用everything()
来选择剩余的列
library(dplyr)
df %>%
select(Project, 7:ncol(.)) %>%
group_by(Project) %>%
summarise(across(everything(), sum, na.rm = TRUE), .groups = 'drop')
如果我们想直接不使用select
,则从范围的group_by
中使用的列数中减去列索引
df %>%
group_by(Project) %>%
summarise(across((7-1):(ncol(.)-1), sum, na.rm = TRUE), .groups = 'drop')