R语言如何将DataFrame拆分为包含历史累计分组数据的列表
通用实现代码(tidyverse 版本)
library(dplyr) # 自动识别tour的总分组数,适配任意长度的dates_tour n_tour <- length(levels(df$tour)) # 生成包含累计分组的列表 df_list <- lapply(1:n_tour, function(k) filter(df, tour <= k)) # 可选:为列表元素命名,方便后续按名称调用 names(df_list) <- paste0("tour_1_to_", 1:n_tour)
逻辑说明
- 你通过
cut生成的tour因子是按时间顺序排列的,水平值正好是1到length(dates_tour)-1的整数序列,天然符合累加筛选的顺序要求 - 代码通过遍历1到最大分组数,每次筛选所有
tour值小于等于当前遍历值的行,即可得到每个列表元素包含当前及之前所有分组数据的效果 - 不需要硬编码分组数量,自动适配任意长度的
dates_tour向量
Base R 版本(无需加载dplyr)
n_tour <- nlevels(df$tour) df_list <- lapply(1:n_tour, function(k) df[df$tour <= k, ]) names(df_list) <- paste0("tour_1_to_", 1:n_tour)
内容的提问来源于stack exchange,提问作者Pastor Soto
相关产品推荐
相关产品推荐

