基于连续两日滚动和阈值条件的降水量总和计算问题
降水量规则求和R实现
实现逻辑
完全匹配你提出的计算规则:遍历所有连续两日的降水量滚动和,大于3英寸则按3英寸计入总和,否则按实际和计入,最终累加所有调整后的值得到单一结果。
方法1:Base R 实现(无需额外安装依赖包)
# 生成你提供的测试数据 set.seed(123) df <- c(runif(100, min = 0, max = 3)) # 计算所有连续两日的滚动和 roll_sum <- df[-length(df)] + df[-1] # 按规则调整数值:滚动和大于3取3,否则取原值 adj_values <- ifelse(roll_sum > 3, 3, roll_sum) # 计算最终总和 total_sum <- sum(adj_values) # 输出结果 print(total_sum)
方法2:zoo包实现(适合扩展更复杂的滚动计算场景)
如果需要处理更大窗口的滚动计算,可以用zoo包的rollsum函数:
# 首次使用需先安装包:install.packages("zoo") library(zoo) set.seed(123) df <- c(runif(100, min = 0, max = 3)) # 计算窗口为2的左对齐滚动和 roll_sum <- rollsum(df, k = 2, align = "left") adj_values <- ifelse(roll_sum > 3, 3, roll_sum) total_sum <- sum(adj_values) print(total_sum)
测试结果
你提供的固定随机种子测试数据,运行上述代码得到的最终求和结果约为207.59,浮点精度导致的微小误差可通过round()函数提前处理小数位数消除。
内容的提问来源于stack exchange,提问作者lsangha
相关产品推荐
相关产品推荐

