我想用下限和上限进行累积和,以便总和永远不会低于下限或高于上限。但是,上边界应该是作为函数向量给出的变量值,而不应该是本文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-表格-片段
感谢您对此主题的任何帮助!
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)
)