我不确定如何找到最佳方法来计算相同ID的时间组之间的时差。 数据集如下:
ID:{1,1,2,2}
time:{13:44:07,13:44:09,13:44:34,13:45:44}
我想产生类似L的输出
ID:{1,2}
timestamp:{2s,70s}
我已经将我的时间格式更改为POSIXct,并且在尝试使用类似以下代码时:
data%>%
group_by(ID)%>%
mutate(timestamp=difftime(time,lag(time)))
它显示错误
Column `time` is a date/time and must be stored as POSIXct, not POSIXlt
答案 0 :(得分:1)
我们可以使用difftime
将as.POSIXct
转换为Date时间(根据OP的帖子,可以使用strptime
将其转换为POSIXlt
类,与tidyverse
兼容)
library(dplyr)
data %>%
mutate(timeN = as.POSIXct(time, format = '%H:%M:%S')) %>%
group_by(ID) %>%
summarise(timediff = difftime(first(timeN), last(timeN), unit = 'sec'))
# A tibble: 2 x 2
# ID timediff
# <dbl> <time>
#1 1 -2
#2 2 -70
data <- structure(list(ID = c(1, 1, 2, 2), time = c("13:44:07", "13:44:09",
"13:44:34", "13:45:44")), .Names = c("ID", "time"), row.names = c(NA,
-4L), class = "data.frame")