[英]Taking the rows of a data.frame and transposing into one column vector
[英]Merge “n” rows in a data.frame by taking the sum of each column
我在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
或一些类似的函数在一行或两行代码中实现这一点吗?
我们可以split
数据框分为两组交替的行,然后使用Reduce
将它们明智地添加。
Reduce("+", split(df, c(TRUE, FALSE)))
# X1 X2 X3 X4
#2 13 7 10 5
#4 15 6 16 12
也许像
df <- data.frame(a=1:10, b=10:19)
df[seq(1,nrow(df),2),] + df[seq(2,nrow(df),2),]
这是带有基数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
我们可以使用rowsum
rowsum(df1, gl(nrow(df1), 2, nrow(df1)))
# X1 X2 X3 X4
#1 13 7 10 5
#2 15 6 16 12
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.