r语言 - 查找数据框中最高值和最低值之间的时间差并按因子排序



我有一个数据框,它看起来像这样:

submition_id       time_answered
           2 2017-11-06 14:19:30
           2 2017-11-06 14:22:45
           2 2017-11-06 14:24:55
           2 2017-11-06 14:34:10
           4 2017-11-06 14:31:23
           4 2017-11-06 14:33:21
           5 2017-11-06 14:54:48
           5 2017-11-06 14:59:38 
           5 2017-11-06 15:05:39
         ...                 ...

所以基本上我的submition_id列是因子列time_answered列是 POSIXct 列。我想找到每个因素的时间差,基本上是 max(x( - min(x(。如何使用内置功能有效地做到这一点?这样我得到

submition_id       difference
           2            14.67
           4             1.96
           5             9.77
         ...              ... 

我也希望在几分钟内完成。

我相信SO上一定有类似的问题。

但是,为了完整起见,这里有一个data.table解决方案(包括数据(:

library(data.table)
setDT(DT)[, .(diff = difftime(max(time_answered), min(time_answered), unit = 'mins')), 
          by = submition_id]
   submition_id           diff
1:            2 14.666667 mins
2:            4  1.966667 mins
3:            5 10.850000 mins

数据

DT <- readr::read_table("submition_id       time_answered
           2 2017-11-06 14:19:30
           2 2017-11-06 14:22:45
           2 2017-11-06 14:24:55
           2 2017-11-06 14:34:10
           4 2017-11-06 14:31:23
           4 2017-11-06 14:33:21
           5 2017-11-06 14:54:48
           5 2017-11-06 14:59:38 
           5 2017-11-06 15:05:39")
require(dplyr)
DF <- DF%>%group_by(submition_id)%>%summarise(difference = difftime(min(time_answered), max(time_answered), units = "min"))

lubridate包非常有用,intervallubridate将在特定时间之间创建一个时间跨度,然后您可以使用 dplyrarrange 中的group_by计算此时间跨度的duration......您能否提供一些数据示例/DPUT,因为其他人建议使用您的数据摘录

最新更新