获取dataframe中多个列的成对和

获取dataframe中多个列的成对和,r,dataframe,rowsum,R,Dataframe,Rowsum,我有一个如下所示的数据帧: x您可以对列子集使用rowsumes 作为数据帧: data.frame(ab = rowSums(x[c("a", "b")]), cd = rowSums(x[c("c", "d")])) # ab cd # 1 11 17 # 2 10 16 # 3 9 15 # 4 8 14 # 5 7 13 cbind(ab = rowSums(x[1:2]), cd = rowSums(x[3:4])) y <- combn(ncol(x), 2L,

我有一个如下所示的数据帧:


x您可以对列子集使用
rowsumes

作为数据帧:

data.frame(ab = rowSums(x[c("a", "b")]), cd = rowSums(x[c("c", "d")]))
#   ab cd
# 1 11 17
# 2 10 16
# 3  9 15
# 4  8 14
# 5  7 13 
cbind(ab = rowSums(x[1:2]), cd = rowSums(x[3:4]))
y <- combn(ncol(x), 2L, function(y) rowSums(x[y]))
colnames(y) <- combn(names(x), 2L, paste, collapse = "")
y
#      ab ac ad bc bd cd
# [1,] 11 13 16 12 15 17
# [2,] 10 13 15 11 13 16
# [3,]  9 13 14 10 11 15
# [4,]  8 13 13  9  9 14
# [5,]  7 13 12  8  7 13
作为矩阵:

data.frame(ab = rowSums(x[c("a", "b")]), cd = rowSums(x[c("c", "d")]))
#   ab cd
# 1 11 17
# 2 10 16
# 3  9 15
# 4  8 14
# 5  7 13 
cbind(ab = rowSums(x[1:2]), cd = rowSums(x[3:4]))
y <- combn(ncol(x), 2L, function(y) rowSums(x[y]))
colnames(y) <- combn(names(x), 2L, paste, collapse = "")
y
#      ab ac ad bc bd cd
# [1,] 11 13 16 12 15 17
# [2,] 10 13 15 11 13 16
# [3,]  9 13 14 10 11 15
# [4,]  8 13 13  9  9 14
# [5,]  7 13 12  8  7 13
对于更宽的数据帧,还可以在列子集列表上使用
sapply

sapply(list(1:2, 3:4), function(y) rowSums(x[y]))
对于所有成对列组合:

data.frame(ab = rowSums(x[c("a", "b")]), cd = rowSums(x[c("c", "d")]))
#   ab cd
# 1 11 17
# 2 10 16
# 3  9 15
# 4  8 14
# 5  7 13 
cbind(ab = rowSums(x[1:2]), cd = rowSums(x[3:4]))
y <- combn(ncol(x), 2L, function(y) rowSums(x[y]))
colnames(y) <- combn(names(x), 2L, paste, collapse = "")
y
#      ab ac ad bc bd cd
# [1,] 11 13 16 12 15 17
# [2,] 10 13 15 11 13 16
# [3,]  9 13 14 10 11 15
# [4,]  8 13 13  9  9 14
# [5,]  7 13 12  8  7 13
y这里是另一个选项:

> sapply(split.default(x, 0:(length(x)-1) %/% 2), rowSums)
      0  1
[1,] 11 17
[2,] 10 16
[3,]  9 15
[4,]  8 14
[5,]  7 13
0:(长度(x)-1)%/%2
步骤创建了一组2的序列,可用于
拆分
。它还将处理奇数列(将最后一列视为自己的一组)。由于对按行拆分的
数据框
有不同的默认
拆分
方法,因此需要指定
拆分.default
将列拆分为组