【问题标题】:Finding time gaps寻找时间间隔
【发布时间】:2017-05-23 10:19:54
【问题描述】:

巧合的是,我发现我的第一列,一个结构为 POSIXct 的向量,其中有时间间隔。我的数据集包含每分钟的观察值,但是,例如在 10:04:00 到 10:07:00 之间,缺少 2 个值:

Date_time  
2016-05-11 10:02:00  
2016-05-11 10:03:00  
2016-05-11 10:04:00  
2016-05-11 10:07:00  
2016-05-11 10:08:00

我正在处理一个大型数据集,我想知道其中存在多少时间间隔以及我可以在哪个位置找到它们。我尝试使用 seq() 命令,但我不知道如何将其用于 POSIXct 类的值。 谢谢

【问题讨论】:

  • “差距”是什么意思?
  • 我编辑了我的帖子以澄清我的问题。我所说的时间间隔是指数据集每分钟应该有一个值,但是有一些间隔大于一分钟,即缺失值。
  • 看看?diff.difftime()...也许which(diff.difftime(ddf$Date_time) != 1)length(which(...)) 看看有多少
  • 你的意思是 difftime() 命令吗?我已经尝试过该功能,但是我需要一个包含每个元素的 difftime() 的代码。该命令会询问两个连续元素的时间差是否大于 1,并询问这些元素在哪里。我怎样才能做到这一点?

标签: r time-series gaps-in-data


【解决方案1】:

一些data.table的解决方案:

library(data.table)
library(dplyr)
dt <- read.csv(text ='Date_time  
2016-05-11 10:02:00
2016-05-11 10:03:00
2016-05-11 10:04:00
2016-05-11 10:07:00
2016-05-11 10:08:00', as.is = T) %>% setDT()
dt[, Date_time := strptime(Date_time, "%Y-%m-%d %H:%M:%S")]
dt[, diff := Date_time - shift(Date_time)][, .N, by = diff]
##       diff N
## 1: NA mins 1
## 2:  1 mins 3
## 3:  3 mins 1

【讨论】:

  • 好的。我现在明白了,虽然我只了解你的代码的一半。我是这样一步一步做的: >dt diff = wind.data$Date_time - shift(wind.data$Date_time) >which(diff )
猜你喜欢
  • 2019-11-05
  • 1970-01-01
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
  • 1970-01-01
  • 2021-05-01
相关资源
最近更新 更多