数据框中的总和列

时间:2015-10-28 01:02:05

标签: r sum

我有一个8列的数据框,其中每列被求和以得到总和。然后我必须合并前两列的总和,然后是下一个2,再次是下一个2,依此类推,以便我留下4列(前2的总和,下2的总和等等)。 以下是数据示例:

A B A1 B1 A2 B2 A3 B3 
1 2 1  2  1  1  3  1
2 3 1  1  3  3  2  1
5 6 6  4  3  2  1  1

这是我使用的代码,我能够成功地执行此操作:

ColumnSums<-lapply(ColumnSums, function(x) sum(x))

AB<-ColumnSums$A+ColumnSums$B
A1B1<-ColumnSums$A1+ColumnSums$B1
A2B2<-ColumnSums$A2+ColumnSums$B2
A3B3<-ColumnSums$A3+ColumnSums$B3

CombinedTotals<-c(AB,A1B1,A2B2,A3B3)
names(CombinedTotals)<-c("AB","A1B1","A2B2","A3B3")

我只是想知道是否有办法修剪此代码。具体来说,我的代码的第二部分。我必须手动组合每个总共2列。我想知道是否有办法使该过程自动化。

1 个答案:

答案 0 :(得分:2)

如果df是原始data.frame

,则可以简单地执行此操作
setNames(colSums(df)[c(F, T)]+colSums(df)[c(T,F)], c("AB","A1B1","A2B2","A3B3"))
#AB A1B1 A2B2 A3B3 
#19   15   13    9

或者:

tapply(colSums(df), (seq(ncol(df))-1) %/% 2, sum)