gpt4 book ai didi

r - 数据帧的每第 n 列的总和

转载 作者:行者123 更新时间:2023-12-03 02:19:24 24 4
gpt4 key购买 nike

让我们假设数据,

a <- c(10, 20, 30, 40, 50)
b <- c(100, 200, 300, 400, 500)
c <- c(1, 2, 3, 4, 5)
d <- c(5, 4, 3, 2, 1)
df <- data.frame(a, b, c, d)
df
a b c d
1 10 100 1 5
2 20 200 2 4
3 30 300 3 3
4 40 400 4 2
5 50 500 5 1

我想对每个备用列求和,即 a+cb+d 等等。该解决方案应该适用于或很容易修改到其他情况,例如对每隔一列求和,即 a+cb+dc+e 等等。对于上面的示例,解决方案应如下所示,

> dfsum
aplusc bplusd
1 11 105
2 22 204
3 33 303
4 44 402
5 55 501

有什么简单的方法可以做到这一点吗?我已经弄清楚如何进行顺序求和,例如df[,c(T, F)] + df[,c(F, T)];,但是如何对每个第 n 列进行求和呢?除了rbase之外,还有什么解决这个问题的好方法吗?

最佳答案

这是一种更通用的方法,但是假设数据框中的列数是偶数,即

n = 2
Reduce(`+`, split.default(df, rep(seq(ncol(df) / n), each = ncol(df) / n)))
# a b
#1 11 105
#2 22 204
#3 33 303
#4 44 402
#5 55 501

上面基本上将数据帧分割为每两列,即a和bc和d。使用Reduce,将所有第一个元素添加在一起,然后添加所有秒元素,依此类推。因此,对于您的情况,a 将与 c 添加,b 将与 d 添加。如果您想每 3 列求和,只需将上面 split.default 方法的分母更改为 3。但是,请注意,您必须拥有可被 3(或任意整数)整除的列数。 n)。

关于r - 数据帧的每第 n 列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54627689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com