我在R中有一个看起来像
的data.frameX1 X2 X3 X4
11 2 3 4
2 5 7 1
12 4 7 6
3 2 9 6
我希望通过在每列中取其值的总和,将每组两行合并为一。
X1 X2 X3 X4
13 7 10 5
15 6 16 12
此处13 = 11 + 2
,7 = 2 + 5
,10 = 3 + 7
和5 = 4 + 1
。我不知道如何在R中执行此操作。我们可以使用rbind
或类似函数在一行或两行代码中实现此目的吗?
答案 0 :(得分:2)
我们可以split
将数据帧分成两组备用行,然后使用Reduce
以元素方式添加它们。
Reduce("+", split(df, c(TRUE, FALSE)))
# X1 X2 X3 X4
#2 13 7 10 5
#4 15 6 16 12
答案 1 :(得分:1)
可能像
df <- data.frame(a=1:10, b=10:19)
df[seq(1,nrow(df),2),] + df[seq(2,nrow(df),2),]
答案 2 :(得分:1)
以下是基础R的解决方案,它使用回收规则并使用逻辑向量进行索引:
as.matrix(x)[c(TRUE, FALSE),] + as.matrix(x)[c(FALSE, TRUE),]
测试代码:
x <- read.table(head=TRUE, text=
"X1 X2 X3 X4
11 2 3 4
2 5 7 1
12 4 7 6
3 2 9 6")
as.matrix(x)[c(TRUE, FALSE),] + as.matrix(x)[c(FALSE, TRUE),]
# X1 X2 X3 X4
#[1,] 13 7 10 5
#[2,] 15 6 16 12
答案 3 :(得分:1)
我们可以使用rowsum
rowsum(df1, gl(nrow(df1), 2, nrow(df1)))
# X1 X2 X3 X4
#1 13 7 10 5
#2 15 6 16 12