gpt4 book ai didi

r - 累积和直到达到最大值,然后在下一行从零开始重复

转载 作者:行者123 更新时间:2023-12-04 00:44:48 24 4
gpt4 key购买 nike

我觉得这是一个相当简单的问题,但对于我的生活,我似乎无法找到答案。我有一个相当标准的数据框,我想要做的是对一列值求和,直到它们达到某个值(确切值或大于它),此时它将 1 放入一个新列(标记为保持)并在 0 处重新开始求和。

我有一列分钟、分钟之间的差异、一个保留列和一个累积总和列(我使用的示例比实际的完整数据集清晰得多)

 minutes     difference     keep     difference_sum
1052991158 0 0 0
1052991338 180 0 180
1052991518 180 0 360
1052991698 180 0 540
1052991878 180 0 720
1052992058 180 0 900
1052992238 180 0 1080
1052992418 180 0 1260
1052992598 180 0 1440
1052992778 180 0 1620
1052992958 180 0 1800

差和列是用代码计算的
caribou.sub$difference_sum<-cumsum(difference)

我想要做的是运行上面的代码,条件是,当求和值达到 1470 或任何大于它的数字时,它在保持列中放置一个 1,然后重新开始求和,并继续在整个数据集中运行。

提前致谢,如果您需要更多信息,请告诉我。

艾登

最佳答案

我认为这最好用 for 循环来完成,想不出一个可以开箱即用的函数。以下应该做你想做的(如果我理解正确的话)。

current.sum <- 0
for (c in 1:nrow(caribou.sub)) {
current.sum <- current.sum + caribou.sub[c, "difference"]
carribou.sub[c, "difference_sum"] <- current.sum
if (current.sum >= 1470) {
caribou.sub[c, "keep"] <- 1
current.sum <- 0
}
}

如果它不完全是您想要的,请随时发表评论。但是正如alexwhan所指出的,您的描述并不完全清楚。

关于r - 累积和直到达到最大值,然后在下一行从零开始重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15466880/

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