根据时间间隔检查在 R 中插入新行
insert a new row in R based on time interval checking
全部;
我只有一个包含两列的数据文件,一列是时间序列,一列是值。通常情况下,两行之间的时间间隔正好是 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
欢迎任何建议和想法:)
我们可以在转换为 'date' 到 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
全部; 我只有一个包含两列的数据文件,一列是时间序列,一列是值。通常情况下,两行之间的时间间隔正好是 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
欢迎任何建议和想法:)
我们可以在转换为 'date' 到 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