You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中按ID匹配将10天间隔区间嵌套入对应列表的问题

R列表嵌套匹配问题解决

最终实现代码

set.seed(12345)
library(lubridate)
library(tidyverse)

# 模拟数据部分不变
date <- rep_len(seq(dmy("01-01-2010"), dmy("31-12-2013"), by = "days"), 500)
ID <- rep(c("A","B","C","D", "E"), 100)

df <- data.frame(date = date,
                 x = runif(length(date), min = 60000, max = 80000),
                 y = runif(length(date), min = 800000, max = 900000),
                 ID)

# 核心处理逻辑
df_nested <- df %>%
  # 提前计算10天间隔归属列
  mutate(
    date_interval = floor_date(date, "10 days"),
    date_interval = if_else(day(date_interval) == 31, date_interval - days(10), date_interval)
  ) %>%
  # 第一层拆分:按ID拆分,得到每个ID的独立数据集
  group_split(ID) %>%
  # 第二层拆分:对每个ID的数据集,按10天间隔拆分
  lapply(function(id_subset) group_split(id_subset, date_interval))

# 给第一层列表添加ID名称,方便后续调用
names(df_nested) <- unique(df$ID)

结果说明

最终生成的df_nested完全符合预期结构:

  • 第一层共5个元素,对应IDA/B/C/D/E
  • 每个ID项下的子元素仅为该ID专属的10天间隔数据子集,不会混入其他ID的内容

原有代码问题排查

你提供的原有代码逻辑本身没有核心错误,出现多ID混入的问题通常是两个原因导致:

  1. 提前拆分得到的df_ID列表执行错误,每个子元素没有完全过滤对应ID
  2. 单独生成的全局10天间隔列表没有和ID做匹配就直接嵌套
    如果要沿用原有写法,删除冗余的arrange(ID)语句即可,拆分后的单个ID子集不需要再针对ID做排序操作。

内容的提问来源于stack exchange,提问作者John Huang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:27:00