R中相同ID的多个条目的时间差
对于每个相同的ID,我想添加一个结束时间,然后计算该用户ID的每个条目之间的时间差 这是我目前掌握的代码:R中相同ID的多个条目的时间差,r,web,statistics,web-statistics,R,Web,Statistics,Web Statistics,对于每个相同的ID,我想添加一个结束时间,然后计算该用户ID的每个条目之间的时间差 这是我目前掌握的代码: user%group\u by(user$userdata.user\u id)%%>%arrange(user$hours)%%>%mutate(time.interval=user$hours-lag(user$hours,默认值=first(user$hours)))%%>%mutate(time.interval=round(time.interval/86400,digits=2
user%group\u by(user$userdata.user\u id)%%>%arrange(user$hours)%%>%mutate(time.interval=user$hours-lag(user$hours,默认值=first(user$hours)))%%>%mutate(time.interval=round(time.interval/86400,digits=2))
我尝试使用diff time()函数,但由于我尝试使用预设的结束日期(“02-20-2020”=7)计算时间差,因此无法获得以下结果:
id hours time.decimal time.interval
123 03:32:12 1.200 3.3(4.5-1.2)
12312:37:564.5002.5(7-4.5)
14009:46:336.3000.7(7-6.3)
**注:以上是我想要实现的一个例子。时间间隔列中的7是给定结束日期的时间十进制版本
非常感谢您的帮助。您可以使用
lead
获取时间的下一个值。十进制
,默认值为7
library(dplyr)
user %>%
group_by(id) %>%
mutate(time.interval = lead(time.decimal, default = 7) - time.decimal) %>%
ungroup() -> user
df
# id hours time.decimal time.interval
# <int> <chr> <dbl> <dbl>
#1 123 03:32:12 1.2 3.3
#2 123 12:37:56 4.5 2.5
#3 140 09:46:33 6.3 0.7
数据
user <- structure(list(id = c(123L, 123L, 140L), hours = c("03:32:12",
"12:37:56", "09:46:33"), time.decimal = c(1.2, 4.5, 6.3)),
class = "data.frame", row.names = c(NA, -3L))
用户请dput(head())您的数据。
user <- structure(list(id = c(123L, 123L, 140L), hours = c("03:32:12",
"12:37:56", "09:46:33"), time.decimal = c(1.2, 4.5, 6.3)),
class = "data.frame", row.names = c(NA, -3L))