具有可变上限的有界累积和

问题描述 投票:0回答:1

我想用下限和上限进行累积和,以便总和永远不会低于下限或高于上限。但是,上边界应该是作为函数向量给出的变量值,而不应该是本文text中的固定值。

我尝试使用@G提出的 cumsum.bounded 函数。 Grothendieck 的上述函数,但它只需要一个上限。

这是一些示例数据:

test_data <- tibble(prec_et = c(1,2,-1,-3,5,4,5,4,3,-3,-2,4,3,4),
                    upper_bound = c(10,10,10,10,10,10,10,13,14,15,16,17,18,19,20))

我的函数预期输出应该是这样的

# [1] 1 3 2 0 4 9 13 14 15 12 10 14 18 20

或者这里与 Excel 表格的片段相同: excel-表格-片段

感谢您对此主题的任何帮助!

r cumsum bounds
1个回答
0
投票
test_data$cs <- cumsum(test_data$prec_et) 
test_data$cs_bounded <-  with(test_data, pmax(0, pmin(upper_bound, cumsum(prec_et))))
test_data

#    prec_et upper_bound cs cs_bounded
# 1        1          10  1          1
# 2        2          10  3          3
# 3       -1          10  2          2
# 4       -3          10 -1          0
# 5        5          10  4          4
# 6        4          10  8          8
# 7        5          10 13         10
# 8        4          13 17         13
# 9        3          14 20         14
# 10      -3          15 17         15
# 11      -2          16 15         15
# 12       4          17 19         17
# 13       3          18 22         18
# 14       4          19 26         19

哪里

test_data <- data.frame(
  prec_et = c(1, 2, -1, -3, 5, 4, 5, 4, 3, -3, -2, 4, 3, 4),
  upper_bound = c(10, 10, 10, 10, 10, 10, 10, 13, 14, 15, 16, 17, 18, 19)
)
© www.soinside.com 2019 - 2024. All rights reserved.