在下一个出现的值上加入一个表

时间:2017-11-21 13:48:51

标签: r join data.table self-join

我有一个包含分组变量和时间变量的表。我想计算每次观察到下一次观察的时间(在组内)。我的想法是使用data.table滚动连接自己加入表,但因为原始值也存在于我正在加入的表中(毕竟它们是相同的表)这不会产生期望的结果。

这是我的意思的一个例子。 grouptime是我拥有的变量,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))

0 个答案:

没有答案