【问题标题】:insert a new row in R based on time interval checking根据时间间隔检查在 R 中插入新行
【发布时间】:2017-05-22 23:10:37
【问题描述】:

全部; 我只有一个包含两列的数据文件,一是时间序列,一是值。正常情况下,两排之间的时间间隔正好是5分钟,但有时会大于5分钟

示例如下:

    dd <- data.table(date = c("2015-07-01 00:00:00", "2015-07-01 00:05:00", "2015-07-01 00:20:00","2015-07-01 00:25:00","2015-07-01 00:30:00"),
         value = c(9,1,10,12,0))

我要做的是检查两行之间的时间间隔,当时间间隔大于5分钟时,然后在下面插入一个新行,值为0,结果可能是:

    date                  value
    2015-07-01 00:00:00    9
    2015-07-01 00:05:00    1
    2015-07-01 00:10:00    0
    2015-07-01 00:15:00    0
    2015-07-01 00:20:00    10
    2015-07-01 00:25:00    12
    2015-07-01 00:30:00    0

欢迎任何建议和想法:)

【问题讨论】:

    标签: r time intervals


    【解决方案1】:

    我们可以在将'date'转换为DateClass之后进行join

    dd[, date := as.POSIXct(date)][]
    dd[dd[, .(date=seq(min(date), max(date), by = "5 min"))], on = 'date'
            ][is.na(value), value := 0][]
    #                  date value
    #1: 2015-07-01 00:00:00     9
    #2: 2015-07-01 00:05:00     1
    #3: 2015-07-01 00:10:00     0
    #4: 2015-07-01 00:15:00     0
    #5: 2015-07-01 00:20:00    10
    #6: 2015-07-01 00:25:00    12
    #7: 2015-07-01 00:30:00     0
    

    【讨论】:

    • 投反对票的人能否也评论一下为什么他或她认为这不能解决问题?
    • 也不清楚为什么这个问题在没有任何评论的情况下被否决。
    猜你喜欢
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 2021-03-08
    • 2019-01-13
    相关资源
    最近更新 更多