计算R中后续行中两个值之间的差异

时间:2016-01-25 03:11:33

标签: r time-series

我的数据如下:

Event      Time
    A  10:59:36
    B  11:00:27
    A  11:01:36
    B  11:02:01
    A  11:02:15
    B  11:02:45

我需要计算两个事件A和B之间的时间。所以期望的输出是:

A-B   Time Spent
  1           51
  2           25
....

我相信这可以用R来完成,但我是Statistics& amp;的初学者。 R所以发现它有点困难。

2 个答案:

答案 0 :(得分:3)

我不确定您当前的Time列的类型,因此我将原始数据用作字符串,然后使用strptime()对其进行转换。之后,我只是为AB事件划分了行的差异。

events <- data.frame(Event=c("A", "B", "A", "B", "A", "B"),
                     Time=c("10:59:36", "11:00:27", "11:01:36",
                            "11:02:01", "11:02:15", "11:02:45"))

events$Time <- strptime(events$Time, format="%H:%M:%S")
output      <- events[events$Event=="B", "Time"] -
                       events[events$Event=="A", "Time"]
events_out  <- data.frame("A-B" = c(1:length(output)), 
                            "Time Spent" = output)

> events_out
  A.B Time.Spent
1   1    51 secs
2   2    25 secs
3   3    30 secs

答案 1 :(得分:0)

以下是chron的另一个选项。我从@TimBiegeleisen上面的帖子中获取了数据

library(chron)
v1 <- chron(times(events$Time))
Time.Spent <- as.numeric(difftime(v1[c(FALSE, TRUE)], 
                    v1[c(TRUE, FALSE)], units='secs'))
newEvent <- data.frame(`A-B` = seq_along(Time.Spent), 
               Time.Spent, check.names=FALSE)
newEvent
#   A-B Time.Spent
#1   1         51
#2   2         25
#3   3         30