我的数据如下:
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所以发现它有点困难。
答案 0 :(得分:3)
我不确定您当前的Time
列的类型,因此我将原始数据用作字符串,然后使用strptime()
对其进行转换。之后,我只是为A
和B
事件划分了行的差异。
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