将多行汇总为一行,

时间:2020-10-31 18:07:35

标签: r database sum row

我有一个大数据框[7872 x 7872],基本上看起来像这样:

df <- data.frame(X0.61=c(1, 2, 3, 4, 5),
             X0.225=c(3, 4, 5, 6, 7),
             X0.329=c(4, 5, 6, 7, 8),
             X0.553=c(5, 6, 7, 8, 9))

例如,我想对X0.61,X0.225和X0.553列的第1行和第3行求和。什么是有效的方法?我必须对100行进行此类求和,此刻我正在使用以下繁琐的代码:

x <- sum(EXIO[1, c(61, 225, 389, 553, 717, 881)])

EXIO是我的数据,在第一行中是1,在c中是所有列。必须有一种更有效的方法来完成约1600行,对吗?我仍然是R新手。

最终,我需要将所有这些总和合并到新的行和列中,以将其与另一个数据集合并。如果你们中的任何一个可以为我提供一个通用的代码/程序包以供日后使用,这也将不胜感激。

2 个答案:

答案 0 :(得分:2)

我不确定这是否是更大数据框的一部分,以及您打算如何在其中应用它,但是我可能会在purrr中使用map函数。

library(purrr)
df <- data.frame(X0.61=c(1, 2, 3, 4, 5),
             X0.225=c(3, 4, 5, 6, 7),
             X0.329=c(4, 5, 6, 7, 8),
             X0.553=c(5, 6, 7, 8, 9))
map(df[c(1,3), c(1,2,4)], sum)


$X0.61
4
$X0.225
8
$X0.553
12

答案 1 :(得分:0)

我们可以使用

library(dplyr)
df %>%
   summarise(across(c(1, 2, 4), ~ sum(.[c(1, 3)])))
#   X0.61 X0.225 X0.553
#1     4      8     12