汇总滚动列的行

时间:2015-06-15 19:17:17

标签: r apply rowsum

我需要应用一个滚动函数来对每两列的行求和,因此第1列和第2列的行将相加,3和4等。

m<-matrix(c(1,2,3,4,5,3,4,5,6,2,4,6,6,7,3,2,4,4,5,7),nrow=2,byrow=T)

我已经查看了许多函数,包括apply,rollapply,aggregate等,但似乎找不到滚动对指定列的行进行求和的函数。

我能够长期编写代码,但是我正在寻找一种最有可能涉及功能的有效解决方案。

sum1<-(m[,1]+m[,2])
sum2<-(m[,3]+m[,4])
sum3<-(m[,5]+m[,6])
sum4<-(m[,7]+m[,8])
sum5<-(m[,9]+m[,10])

cbind(sum1,sum2,sum3,sum4,sum5)   

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用此方法:

m[,seq(1, ncol(m),2)] + m[,seq(2, ncol(m), 2)]
#     [,1] [,2] [,3] [,4] [,5]
#[1,]    3    7    8    9    8
#[2,]   10   13    5    8   12

答案 1 :(得分:0)

另一种方法是将m转换为3维数组,然后对列进行求和:

> X <- m
> dim(X) <- c(2,2,5)
> colSums(aperm(X, c(2,1,3)))
     [,1] [,2] [,3] [,4] [,5]
[1,]    3    7    8    9    8
[2,]   10   13    5    8   12