R语言规整为2分钟时间序列后仍出现1分钟间隔的原因排查
问题原因分析
处理后仍出现1分钟间隔,核心问题出在第一步去重时保留了原始时间戳,而非2分钟对齐的区间起始时间:
- 你的去重逻辑是按
floor_date(timestamp, "2 minutes")分组,但用.keep_all = TRUE保留了原始时间戳,而非floor后的对齐时间。- 比如原始数据里的
10:05(floor后为10:04)和10:06(floor后为10:06)属于不同的2分钟区间,不会被去重,最终保留的原始时间戳间隔仅1分钟。
- 比如原始数据里的
- 若你观察的是去重后、expand前的中间数据,自然会看到1分钟间隔;即使执行完expand,原数据中非对齐时间戳作为min/max时,也可能导致序列生成出现偏差。
修正方案
调整去重逻辑,直接将时间戳替换为2分钟对齐的区间起始时间,确保后续处理的基准时间严格符合间隔要求:
# 修正去重:将时间戳替换为2分钟对齐的起始时间 dummy_data <- dummy_data %>% group_by(focalbear_event) %>% arrange(timestamp_focal.bhv.change) %>% mutate(timestamp_focal.bhv.change = floor_date(timestamp_focal.bhv.change, unit = "2 minutes")) %>% distinct(timestamp_focal.bhv.change, .keep_all = TRUE) %>% ungroup() # 保留原expand函数逻辑 expand_timestamps <- function(df) { df %>% group_by(focalbear_event) %>% complete(timestamp_focal.bhv.change = seq(min(timestamp_focal.bhv.change), max(timestamp_focal.bhv.change), by = "2 mins")) %>% fill(everything(), .direction = "down") %>% ungroup() } dummy_data <- expand_timestamps(dummy_data)
处理后所有时间戳会严格按2分钟间隔对齐,不会再出现1分钟间隔的情况。
内容的提问来源于stack exchange,提问作者kalex
相关产品推荐
相关产品推荐

