r - 在 R 中,如何自动检测首次出现非标准时差的位置?
问题描述
我有一个数据框,其中每一行都是不同的时间戳。数据框中较旧的数据每隔 30 分钟收集一次,而较新的数据每隔 15 分钟收集一次。我想运行一个计算每行之间的时间差的 for 循环(或者可能是 ifelse 语句),如果差值等于 30 分钟(下面的示例使用 1800 秒),则循环继续,但如果循环遇到15 分钟的时差(下面的示例使用 900 秒)它会停止并告诉我这首先发生在哪一行。
x <- as.POSIXct("2000-01-01 01:00", tz = "", "%Y-%m-%d %H:%M")
y <- as.POSIXct("2000-01-10 12:30", tz = "", "%Y-%m-%d %H:%M")
xx <- as.POSIXct("2000-01-10 12:45", tz = "", "%Y-%m-%d %H:%M")
yy <- as.POSIXct("2000-01-20 23:45", tz = "", "%Y-%m-%d %H:%M")
a.30 <- as.data.frame(seq(from = x, to = y, by = 1800))
names(a.30)[1] <- "TimeStamp"
a.15 <- as.data.frame(seq(from = xx, to = yy, by = 900))
names(a.15)[1] <- "TimeStamp"
dat <- rbind(a.30,a.15)
在示例dat
数据帧中,时间差在第 457 行从 30 分钟间隔切换到 15 分钟。我想自动化识别时间差变化首先发生的行的过程。
解决方案
我们可以difftime
用来计算时间上的差异,mins
并根据差异创建一个逻辑向量
library(dplyr)
dat %>%
summarise(ind = which.max(abs(as.numeric(difftime(TimeStamp,
lag(TimeStamp, default = TimeStamp[2]), unit = 'min'))) < 30))
# ind
#1 457
推荐阅读
- api - 如何使用 Carina 测试框架在代码中设置数组属性值以进行 API 测试?
- python - 带有贝宝集成的 Odoo 10 不返回已付款状态以确认销售订单?
- python - 使用棉花糖验证具有列表长度约束的模式列表
- google-cloud-platform - 使用数据流在谷歌云平台的 BigQuery 服务中加载 Hive 分区表?
- javascript - Openlayers - 缩放到图层
- python - 从 tkinter 窗口打开特定文件
- gradle - Intellij IDEA生成的kotlin原生项目中的gradle依赖块放在哪里?
- java - pipeInput 不在状态存储中创建记录
- python - 使用matplotlib的python中的盒须图与日期时间
- c# - 调整动画剪辑的长度以匹配冷却时间