R用动态标题总结最后N列



我试图总结一个表,该表具有N个日期列,这些列将始终存在于数据集的末尾。有没有一种方法可以总结最后N列,而不是按名称调用每一列?

df <- df %>% group_by(Project) %>% summarise(???)
项目
12345678
12345678

基本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

使用summariseacross进行索引可能有点麻烦,因为索引还必须考虑分组列。一种更简洁的方法是首先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')

相关内容

最新更新