R语言中按时间区间为嵌套列表添加层级的方法咨询
R 三级嵌套时间序列列表的实现方案
核心思路
hop_index 本身支持对数据框做时间索引切片,无需直接传入嵌套列表。只需通过 purrr::map 遍历第一层按chamber_id拆分的子数据框,对每个子数据框单独按自定义时间区间切片,即可得到目标三级嵌套结构。
实现代码
首先确保已加载依赖包:
library(dplyr) library(purrr) library(slider)
核心处理代码:
nested_3level <- map(nested_data, function(chamber_df) { hop_index( .x = chamber_df, .i = chamber_df$date, # 索引为当前子数据框的时间列,和时间区间类型匹配 .f = ~.x, .starts = flushing_times$end_flushing, .stops = flushing_times$start_flushing ) })
结构说明
输出的nested_3level完全符合需求的三级嵌套结构:
- 第一层:列表名称为
chamber_id(取值1-6) - 第二层:每个chamber下的子列表,顺序和
flushing_times的行顺序一一对应,代表每个自定义时间区间 - 第三层:每个时间区间内的观测数据框
可选优化
如果需要给第二层时间区间子集加名称方便调用,可补充如下代码:
# 时间区间子集命名格式为 [区间起始时间]_[区间结束时间] nested_3level <- map(nested_3level, ~set_names( .x, paste(flushing_times$end_flushing, flushing_times$start_flushing, sep = "_") ))
可通过如下代码验证结构正确性:
# 查看chamber 1的第一个时间区间的数据结构 str(nested_3level[["1"]][[1]])
内容的提问来源于stack exchange,提问作者Emie Woodburn
相关产品推荐
相关产品推荐

