Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中相同ID的多个条目的时间差_R_Web_Statistics_Web Statistics - Fatal编程技术网

R中相同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

对于每个相同的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))

我尝试使用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))