Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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中另一行的条件计算非连续行之间的时差? time_R - Fatal编程技术网

如何根据R中另一行的条件计算非连续行之间的时差? time

如何根据R中另一行的条件计算非连续行之间的时差? time,r,R,我们可以为每个块创建组,并计算最后一次和第一次时间之间的时间差,以秒为单位 time <- c('2020-04-25 00:00:12', '2020-04-25 00:01:20', '2020-04-25 00:02:40', '2020-04-25 00:02:48', '2020-04-25 00:02:58', '2020-04-25 00:03:15', '2020-04-25 00:03:45', '2020-04-25 00:04

我们可以为每个块创建组,并计算
最后一次
第一次
时间之间的时间差,以秒为单位

time <- c('2020-04-25 00:00:12', '2020-04-25 00:01:20', '2020-04-25 00:02:40', 
          '2020-04-25 00:02:48', '2020-04-25 00:02:58', '2020-04-25 00:03:15',
          '2020-04-25 00:03:45', '2020-04-25 00:04:23', '2020-04-25 00:04:45', 
          '2020-04-25 00:05:18', '2020-04-25 00:05:36', '2020-04-25 00:05:55')

id <- c('1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1')

status <- c("idle", "idle", "idle", "idle", "off", "off", "idle", "idle", "use", "use", "use", "idle" )

df <-data.frame(id, time, status)

df
   id                time status
1   1 2020-04-25 00:00:12   idle
2   1 2020-04-25 00:01:20   idle
3   1 2020-04-25 00:02:40   idle
4   1 2020-04-25 00:02:48   idle
5   1 2020-04-25 00:02:58    off
6   1 2020-04-25 00:03:15    off
7   1 2020-04-25 00:03:45   idle
8   1 2020-04-25 00:04:23   idle
9   1 2020-04-25 00:04:45    use
10  1 2020-04-25 00:05:18    use
11  1 2020-04-25 00:05:36    use
12  1 2020-04-25 00:05:55   idle
库(dplyr)
df%>%
突变(time=as.POSIXct(time,tz=“UTC”),
grp=cumsum(状态!=“空闲”)%>%
筛选器(状态=='空闲')%>%
分组依据(id,grp)%>%
总结(差异=差异时间(上次(时间)、第一次(时间)、单位=“秒”))%>%
选择(-grp)
#id差异
#     
#11156秒
#2138秒

我们可以为每个块创建组,并以秒为单位计算
最后一个
第一个
时间之间的时间差

time <- c('2020-04-25 00:00:12', '2020-04-25 00:01:20', '2020-04-25 00:02:40', 
          '2020-04-25 00:02:48', '2020-04-25 00:02:58', '2020-04-25 00:03:15',
          '2020-04-25 00:03:45', '2020-04-25 00:04:23', '2020-04-25 00:04:45', 
          '2020-04-25 00:05:18', '2020-04-25 00:05:36', '2020-04-25 00:05:55')

id <- c('1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1')

status <- c("idle", "idle", "idle", "idle", "off", "off", "idle", "idle", "use", "use", "use", "idle" )

df <-data.frame(id, time, status)

df
   id                time status
1   1 2020-04-25 00:00:12   idle
2   1 2020-04-25 00:01:20   idle
3   1 2020-04-25 00:02:40   idle
4   1 2020-04-25 00:02:48   idle
5   1 2020-04-25 00:02:58    off
6   1 2020-04-25 00:03:15    off
7   1 2020-04-25 00:03:45   idle
8   1 2020-04-25 00:04:23   idle
9   1 2020-04-25 00:04:45    use
10  1 2020-04-25 00:05:18    use
11  1 2020-04-25 00:05:36    use
12  1 2020-04-25 00:05:55   idle
库(dplyr)
df%>%
突变(time=as.POSIXct(time,tz=“UTC”),
grp=cumsum(状态!=“空闲”)%>%
筛选器(状态=='空闲')%>%
分组依据(id,grp)%>%
总结(差异=差异时间(上次(时间)、第一次(时间)、单位=“秒”))%>%
选择(-grp)
#id差异
#     
#11156秒
#2138秒

@chinsoon12:我可以知道你是如何将问题输入当前格式的,与我发布时相比的吗?谢谢我猜它只是在控制台中打印
df
,复制并粘贴到您的问题中。@chinsoon12:与我发布问题时相比,您是如何将问题键入当前格式的?谢谢我猜它只是在控制台中打印
df
,复制并粘贴到您的问题中。