我有一个包含分组变量和时间变量的表。我想计算每次观察到下一次观察的时间(在组内)。我的想法是使用data.table
滚动连接自己加入表,但因为原始值也存在于我正在加入的表中(毕竟它们是相同的表)这不会产生期望的结果。
这是我的意思的一个例子。 group
和time
是我拥有的变量,next_time
是我想要创建的变量。
group time next_time
a 2017-11-01 05:00:00 2017-11-01 06:00:00
a 2017-11-01 06:00:00 2017-11-01 07:00:00
a 2017-11-01 07:00:00 <NA>
b 2017-11-01 05:00:00 2017-11-01 11:00:00
b 2017-11-01 11:00:00 <NA>
我拥有的数据的虚拟代码:
structure(list(group = structure(c(1L, 1L, 1L, 2L, 2L), .Label = c("a", "b"), class = "factor"), time = structure(c(1509508800, 1509512400, 1509516000, 1509508800, 1509530400), class = c("POSIXct", "POSIXt"))), .Names = c("group", "time"), row.names = c(NA, -5L), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x0000000002660788>, sorted = c("group", "time"))
所需结果的虚拟代码:
structure(list(group = structure(c(1L, 1L, 1L, 2L, 2L), .Label = c("a", "b"), class = "factor"), time = structure(c(1509508800, 1509512400, 1509516000, 1509508800, 1509530400), class = c("POSIXct", "POSIXt")), next_time = structure(c(1509512400, 1509516000, NA, 1509530400, NA), class = c("POSIXct", "POSIXt"))), class = "data.frame", .Names = c("group", "time", "next_time"), row.names = c(NA, -5L))