首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过取每列的总和来合并data.frame中的"n“行

通过取每列的总和来合并data.frame中的"n“行
EN

Stack Overflow用户
提问于 2017-03-15 16:11:31
回答 4查看 220关注 0票数 1

我在R中有一个data.frame,看起来像

代码语言:javascript
复制
X1 X2 X3 X4
11  2  3  4
2   5  7  1
12  4  7  6
3   2  9  6

我想通过取每一列中它们的值的总和来顺序地将每两行的集合合并成一行。

代码语言:javascript
复制
X1  X2  X3  X4
13  7   10  5
15  6   16  12 

这里有13 = 11 + 27 = 2 + 510 = 3 + 75 = 4 + 1。我不知道如何在R中做到这一点。我们可以使用rbind或一些类似的函数在一两行代码中实现这一点吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-03-15 16:30:03

我们可以将数据帧添加到两组交替的行中,然后使用Reduce按元素添加它们。

代码语言:javascript
复制
Reduce("+", split(df, c(TRUE, FALSE)))

#  X1 X2 X3 X4
#2 13  7 10  5
#4 15  6 16 12
票数 2
EN

Stack Overflow用户

发布于 2017-03-15 16:15:48

也许像这样

代码语言:javascript
复制
df <- data.frame(a=1:10, b=10:19)

df[seq(1,nrow(df),2),] + df[seq(2,nrow(df),2),]
票数 1
EN

Stack Overflow用户

发布于 2017-03-15 16:17:35

这是一个基于R的解决方案,它使用循环规则和带有逻辑向量的索引:

代码语言:javascript
复制
as.matrix(x)[c(TRUE, FALSE),] + as.matrix(x)[c(FALSE, TRUE),]

测试代码:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42804217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档