R groupby函数用于计算时间差

R groupby函数用于计算时间差,r,group-by,timestamp,R,Group By,Timestamp,我不知道如何找到计算相同ID的时间组之间差异的最佳方法。 数据集如下所示: ID:{1,1,2,2} time:{13:44:07,13:44:09,13:44:34,13:45:44} 我想生成输出likeL ID:{1,2} timestamp:{2s,70s} 我已经将时间格式更改为POSIXct,当我尝试使用以下代码时: data%>% group_by(ID)%>% mutate(timestamp=difftime(time,lag(time))) 它显示了以下错误

我不知道如何找到计算相同ID的时间组之间差异的最佳方法。 数据集如下所示:

ID:{1,1,2,2}
time:{13:44:07,13:44:09,13:44:34,13:45:44}
我想生成输出likeL

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


我们可以在使用
as.POSIXct
转换为日期时间后使用
difftime
(根据OP的帖子,可以使用
strtime
将其转换为与
tidyverse
不兼容的
POSIXlt
类)

库(dplyr)
数据%>%
mutate(timeN=as.POSIXct(时间,格式='%H:%M:%S'))%>%
分组依据(ID)%>%
总结(timediff=difftime(第一个(timeN),最后一个(timeN),单位为“秒”)
#一个tibble:2x2
#ID时间差
#     
#1     1 -2      
#2     2 -70     
数据
data有人知道如何解决这个问题吗?谢谢!
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")