我在R中有一个data.frame,看起来像
X1 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或一些类似的函数在一两行代码中实现这一点吗?
发布于 2017-03-15 16:30:03
我们可以将数据帧添加到两组交替的行中,然后使用Reduce按元素添加它们。
Reduce("+", split(df, c(TRUE, FALSE)))
# X1 X2 X3 X4
#2 13 7 10 5
#4 15 6 16 12发布于 2017-03-15 16:15:48
也许像这样
df <- data.frame(a=1:10, b=10:19)
df[seq(1,nrow(df),2),] + df[seq(2,nrow(df),2),]发布于 2017-03-15 16:17:35
这是一个基于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 12https://stackoverflow.com/questions/42804217
复制相似问题