问题 在R中的多个列中有效地求和


我有以下精简数据集:

a<-as.data.frame(c(2000:2005))
a$Col1<-c(1:6)
a$Col2<-seq(2,12,2)

colnames(a)<-c("year","Col1","Col2")

for (i in 1:2){
  a[[paste("Var_", i, sep="")]]<-i*a[[paste("Col", i, sep="")]]
}

我想总结列Var1和Var2,我使用:

a$sum<-a$Var_1 + a$Var_2

实际上我的数据集要大得多 - 我想从Var_1到Var_n之和(n可以高达20)。必须有一种更有效的方法来做到这一点:

 a$sum<-a$Var_1 + ... + a$Var_n

9464
2018-03-12 09:32


起源

尝试申请:$ sum < - apply(a [, - 1],1,sum) - Miha Trošt
谢谢,适用于以下情况,其中i是Var_1的列索引,j是Var_n的列索引 a$sum <- apply(a[,c(i:j)], 1, sum) - user2568648
并进一步自动化该过程(使用 stackoverflow.com/questions/9277363/...): a$sum <- apply(a[,c(match("Var_1",names(a)):match("Var_n",names(a)))], 1, sum) - user2568648
a$Col3 <- rowSums(a[,2:3]) - rmuc8


答案:


您可以使用 colSums(a[,c("Var1", "Var2")]) 要么 rowSums(a[,c("Var_1", "Var_2")])。在你的情况下你想要后者。


11
2018-03-12 09:37