查找数据框中最高值和最低值之间的时间差并按因素排序
Find time difference between highest and lowest value in data frame and sort by factor
我有一个数据框,它看起来像这样:
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
... ...
我也想分分钟搞定
require(dplyr)
DF <- DF%>%group_by(submition_id)%>%summarise(difference = difftime(min(time_answered), max(time_answered), units = "min"))
lubridate
包非常好用,interval
fromlubridate
会在特定时间之间创建一个时间跨度,然后你可以计算这个时间的duration
跨度,使用 dplyr
和 arrange
中的 group_by
...你能提供一些数据示例/dput,正如其他人建议的那样使用你的数据提取
相信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")
我有一个数据框,它看起来像这样:
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
... ...
我也想分分钟搞定
require(dplyr)
DF <- DF%>%group_by(submition_id)%>%summarise(difference = difftime(min(time_answered), max(time_answered), units = "min"))
lubridate
包非常好用,interval
fromlubridate
会在特定时间之间创建一个时间跨度,然后你可以计算这个时间的duration
跨度,使用 dplyr
和 arrange
中的 group_by
...你能提供一些数据示例/dput,正如其他人建议的那样使用你的数据提取
相信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")