gpt4 book ai didi

r - 如何通过数据框中的简单条件对两行求和

转载 作者:行者123 更新时间:2023-12-03 21:58:14 25 4
gpt4 key购买 nike

我想将第 2 行与第 2 行相加,以研究某些变量的滞后。

假设我有以下数据库:

> SE eggs
4 2.0
6 4.0
7 10.0
8 0.5
5 1.0
1 3.0
2 6.0
3 9.0

因此,我期望获得以下结果,其中 eggs 是索引“SE”的总和:

> df
SE2 eggs
"4+5" 3
"6+7" 14
"8+1" 3.5
"2+3" 15

哪里

df = data.frame(SE=c(4,6,7,8,5,1,2,3),eggs = c(2,4,10,0.5,1,3,6,9))

观察:不关心数据帧的顺序,但我需要从某个数字(在本例中为数字 4)开始,然后取下一个数字(在本例中为数字 5),并保留这个逻辑。 SE 6+7、SE 8+1、SE 2+3 之后...

关于如何做到这一点有任何提示吗?

最佳答案

我想我明白了逻辑。您需要从 4 开始递增的数字。当这些数字达到 8(或 SE 的最大值)时,它们会回到 1 并继续递增,直到所有数字用完。

然后将这些数字分组为连续的对。

对于每对数字,您可以找到数据框中具有匹配 SE 值的行。这些行包含您想要求和的鸡蛋的两个值。

df = data.frame(SE=c(4,6,7,8,5,1,2,3),eggs = c(2,4,10,0.5,1,3,6,9))

first <- 4
i <- match(df$SE, c(first:nrow(df), seq(first - 1)))
groups <- ((seq_along(i) + 1) %/% 2)[i]

do.call(rbind, lapply(split(df, groups), function(x) {
data.frame(SE = paste(x$SE, collapse = "+"), eggs = sum(x$eggs))}))
#> SE eggs
#> 1 4+5 3.0
#> 2 6+7 14.0
#> 3 8+1 3.5
#> 4 2+3 15.0

reprex package于2020年2月17日创建(v0.3.0)

关于r - 如何通过数据框中的简单条件对两行求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60269279/

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