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

基于时间差为R语言DataFrame插入对应行数的补全数据

补全时间序列DataFrame的解决方案

步骤说明

要补全每分钟的记录,核心是基于现有时间点生成完整的分钟级时间序列,并沿用对应时间段内的state值。以下是基于tidyverse和lubridate包的实现方法:

代码实现

# 加载所需包
library(tidyverse)
library(lubridate)

# 处理原始数据:转换时间格式并添加下一条记录的时间边界
df1_processed <- df1 %>%
  mutate(last_changed = ymd_hms(last_changed)) %>%
  mutate(next_time = lead(last_changed, default = last(last_changed)))

# 生成完整时间序列并填充数据
df_full <- df1_processed %>%
  rowwise() %>%
  # 生成当前时间到下一条时间的每分钟序列
  mutate(last_changed = list(seq(last_changed, next_time, by = "1 minute"))) %>%
  unnest(last_changed) %>%
  # 保留需要的列
  select(entity_id, state, last_changed)

# 查看补全后的前16行(与期望示例一致)
head(df_full, 16)

代码解释

  1. 时间格式转换:用ymd_hms将字符串类型的last_changed转换为R可识别的datetime格式,便于时间序列操作。
  2. 设置时间边界:通过lead函数获取每条记录的下一条时间,作为当前state值有效的结束时间,最后一条记录的边界设为自身时间。
  3. 生成完整序列:按行生成从当前时间到下一条时间的每分钟时间点,通过unnest将列表展开为多行记录。
  4. 整理结果:筛选出需要的列,得到补全后的DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:32:13