我有一个大的数据帧[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行,必须有一种更有效的方法来做到这一点,对吧?我还是个新手。
最终,我需要将所有这些和合并到新的行和列中,以便将它们与另一个数据集合并。如果你们中的任何人能提供一个通用代码/包供我稍后使用,我们也将不胜感激。
我不确定这是否是更大数据帧的一部分,也不确定您打算如何在那里应用它,但我可能会在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
我们可以使用
library(dplyr)
df %>%
summarise(across(c(1, 2, 4), ~ sum(.[c(1, 3)])))
# X0.61 X0.225 X0.553
#1 4 8 12