如何计算 R 中最短和最长的时间间隔?

How do I calculate the shortest and longest time intervals in R?

我有以下名为 phone 的数据集:

TIMESTAMP time date
2021-01-12 10:42:50.221 10:42:50 2021-01-12
2021-01-12 10:46:01.826 10:46:01 2021-01-12
2021-01-12 10:50:10.063 10:50:10 2021-01-12
2021-01-12 10:53:10.715 10:53:10 2021-01-12
2021-01-12 10:53:14.329 10:53:14 2021-01-12
2021-01-12 10:54:19.792 10:54:19 2021-01-12
2021-01-12 11:01:43.044 11:01:43 2021-01-12
2021-01-12 11:04:36.202 11:04:36 2021-01-12

我想计算整个数据集的两个连续 time 值之间的时间间隔,以便我可以找到一天中最短和最长的时间间隔。我试过下面的代码,试图计算时差,但它给了我负值,我不知道这有多准确。我也试过将单位更改为分钟,但输出对我来说没有意义。

v2 <- ymd_hms(phone$TIMESTAMP)
v1 <- difftime(v2[-length(v2)], v2[-1], unit = "hour")

v1 的输出:

x
-0.0532236 hours
-0.0689547 hours
-0.0501811 hours
-0.0010039 hours
-0.0181842 hours

如何计算间隔并按长度降序排列?

我的数据输入如下:

structure(list(TIMESTAMP = c("2021-01-12 10:42:50.221", "2021-01-12 10:46:01.826", 
"2021-01-12 10:50:10.063", "2021-01-12 10:53:10.715", "2021-01-12 10:53:14.329", 
"2021-01-12 10:54:19.792", "2021-01-12 11:01:43.044", "2021-01-12 11:04:36.202", 
"2021-01-12 11:07:36.636", "2021-01-12 11:18:59.169", "2021-01-12 11:25:44.954", 
"2021-01-12 11:25:54.263", "2021-01-12 11:26:25.414", "2021-01-12 11:28:05.471", 
"2021-01-12 11:30:24.349"), time = c("10:42:50", "10:46:01", 
"10:50:10", "10:53:10", "10:53:14", "10:54:19", "11:01:43", "11:04:36", 
"11:07:36", "11:18:59", "11:25:44", "11:25:54", "11:26:25", "11:28:05", 
"11:30:24"), date = structure(c(18639, 18639, 18639, 18639, 18639, 
18639, 18639, 18639, 18639, 18639, 18639, 18639, 18639, 18639, 
18639), class = "Date")), row.names = c(NA, 15L), class = "data.frame")

您快到了,difftime(time1,time2) 计算时间 1 - 时间 2,并且由于您的时间戳是从早到晚排序的,因此此差异将始终 <=0。因此,解决此问题的一种方法是将两个参数沿相反方向移动 1 位以获得正结果,确保第一个参数始终 >= 到第二个参数。

df$diff=c(NA,difftime(tail(df$TIMESTAMP,-1),head(df$TIMESTAMP,-1),unit="hour"))
df[order(df$diff,decreasing=T),]

                 TIMESTAMP     time       date        diff
10 2021-01-12 11:18:59.169 11:18:59 2021-01-12 0.189592500
7  2021-01-12 11:01:43.044 11:01:43 2021-01-12 0.123125556
11 2021-01-12 11:25:44.954 11:25:44 2021-01-12 0.112718056
3  2021-01-12 10:50:10.063 10:50:10 2021-01-12 0.068954722
2  2021-01-12 10:46:01.826 10:46:01 2021-01-12 0.053223611
4  2021-01-12 10:53:10.715 10:53:10 2021-01-12 0.050181111
9  2021-01-12 11:07:36.636 11:07:36 2021-01-12 0.050120556
8  2021-01-12 11:04:36.202 11:04:36 2021-01-12 0.048099444
15 2021-01-12 11:30:24.349 11:30:24 2021-01-12 0.038577222
14 2021-01-12 11:28:05.471 11:28:05 2021-01-12 0.027793611
6  2021-01-12 10:54:19.792 10:54:19 2021-01-12 0.018184167
13 2021-01-12 11:26:25.414 11:26:25 2021-01-12 0.008653056
12 2021-01-12 11:25:54.263 11:25:54 2021-01-12 0.002585833
5  2021-01-12 10:53:14.329 10:53:14 2021-01-12 0.001003889
1  2021-01-12 10:42:50.221 10:42:50 2021-01-12          NA