R语言:基于日期规则修改列表元素的实现求助
实现方案
以下是符合需求的R语言实现代码,同时附带步骤说明:
# 原始数据 list <- list() list$date <- structure(19297:19310, class = "Date") list$value <- c(100,200,300,100,200,300,100,200,300,100,200,500,800) list$temp2 <- c(1000,2000,3000,1000,2000,3000,1000,2000,3000,1000,2000,5888,9887) # 1. 定位第一周内value最大值的位置 first_week_values <- list$value[1:7] max_positions <- which(list$value[1:7] == max(first_week_values)) # 2. 先对所有元素应用规则1:value * 0.5 * temp2 list$value <- list$value * 0.5 * list$temp2 # 3. 对第一周的最大值应用例外规则:原始值翻倍 # 先还原原始value值,再执行翻倍操作 original_max_vals <- list$value[max_positions] / (0.5 * list$temp2[max_positions]) list$value[max_positions] <- original_max_vals * 2
关键步骤说明
- 定位最大值位置:使用
which函数可以自动处理第一周内存在多个最大值的情况(比如示例中第3、6天的value均为300,都会被选中)。 - 规则优先级:先批量应用规则1,再单独覆盖例外场景,避免重复判断逻辑,提升代码效率。
- 原始值还原:通过反向计算(当前值除以
0.5*temp2)得到原始value,确保例外规则使用的是未修改前的数值。
内容的提问来源于stack exchange,提问作者Bella_18
相关产品推荐
相关产品推荐

