对行中的特定列求和。

3
我需要将每两列相加。 例如:
x1  x2  x3  x4
12  2   3   7
1   4   6   5

I need

X1     X2
14     10
5      11

我试过使用apply函数,还尝试了这个函数。mat是一个矩阵。

mat1=matrix()

for(i in 1:nrow(mat)){
for(j in 1:ncol(mat)){
mat1[i,j]=mat[j,i]+mat[j,i+1]
}}

A5C1D2H2I1M1N2O1R2T1的答案使用了split.default。相关:R核心split函数背后的算法是什么? - Zheyuan Li
3个回答

8
这个问题的一般化(对于一个data.frame)可能是这样的:
sapply(split.default(mydf, 0:(length(mydf)-1) %/% 2), rowSums)
#       0  1
# [1,] 14 10
# [2,]  5 11

%/% 2中的“2”替换为您要“汇总”的列组数。


2
例如:
 mat[,c(TRUE,FALSE)]+mat[,c(FALSE,TRUE)]

  x1 x3
1 14 10
2  5 11

1
id <- 1:ncol(mat)
mat[ , id[id%%2!=0] ] + mat[ , id[id%%2==0] ]
     x1 x3
[1,] 14 10
[2,]  5 11

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接