根据时间间隔检查在R中插入新行

时间:2017-01-08 17:05:28

标签: r time intervals

ALL; 我只有一个包含两列的数据文件,一个是时间序列,一个是值。通常,两排之间的时间间隔精确为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

欢迎任何建议和想法:)

1 个答案:

答案 0 :(得分:2)

我们可以在转换为&#39; date&#39;之后进行加入。到DateClass

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