在r中一次按组求和多个变量
我有多个变量要按组求和。变量的名称具有完全相同的第一个字符,以1到n结尾。所有要求和的变量在数据框中并排排列。我能找到的只是:在r中一次按组求和多个变量,r,aggregate,R,Aggregate,我有多个变量要按组求和。变量的名称具有完全相同的第一个字符,以1到n结尾。所有要求和的变量在数据框中并排排列。我能找到的只是: id<-1:nrow(df) n<-length(id) data2<-aggregate(cbind(vol_1,vol_2,vol_3,vol_4,vol_5,vol_6,vol_7,vol_8,vol_9,vol_10)~group,data=data1,sum,na.rm=T) id您似乎在寻找rowSums 你可以试试: vars <
id<-1:nrow(df)
n<-length(id)
data2<-aggregate(cbind(vol_1,vol_2,vol_3,vol_4,vol_5,vol_6,vol_7,vol_8,vol_9,vol_10)~group,data=data1,sum,na.rm=T)
id您似乎在寻找rowSums
你可以试试:
vars <- c("vol_1","vol_2","vol_3","vol_4","vol_5","vol_6","vol_7","vol_8","vol_9","vol_10")
as.matrix(vars)
rowSums(vars)
vars如果变量都以相同的字符开头,如您所说的“v”,那么dplyr包中的summary_at
函数就派上了用场:
library(dplyr)
df %>%
group_by(group) %>%
summarise_at(vars(starts_with("v")), sum)
# A tibble: 2 x 4
group vol_1 vol_2 vol_3
<fct> <int> <int> <int>
1 1 29 27 24
2 2 26 28 31
您还可以使用数据表
library(data.table)
dt <- data.table(df)
dt[,.(sum(vol_1),sum(vol_2)),by=.(group)]
库(data.table)
嗨,欢迎来到SO。请确保发布一篇文章,包括您的数据。如果我们可以运行您的代码,我们会容易得多,但是我们不知道df
或vol_1
是什么在这个示例中,n=6,数据1是:d1这是否回答了您的问题?
library(data.table)
dt <- data.table(df)
dt[,.(sum(vol_1),sum(vol_2)),by=.(group)]