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