如何解决按状态分组并查找此状态下日期时间的差异
x Status
14/09/2017 15:30:31 A
14/09/2017 15:30:34 A
14/09/2017 16:40:25 B
14/09/2017 17:00:25 B
15/09/2017 09:00:20 A
15/09/2017 10:00:20 A
我想要的是按状态对其进行分组,并找到每个组的日期时间之间的差异以及时间的总和。 期望的输出是
x Status diff.time
14/09/2017 15:30:31 A
14/09/2017 15:30:34 A 3 mins
14/09/2017 16:40:25 B
14/09/2017 17:00:25 B 20 mins
15/09/2017 09:00:20 A
15/09/2017 10:00:20 A 60 mins
解决方法
library( data.table )
#sample data
DT <- fread("x Status
14/09/2017T15:30:31 A
14/09/2017T15:30:34 A
14/09/2017T16:40:25 B
14/09/2017T17:00:25 B
15/09/2017T09:00:20 A
15/09/2017T10:00:20 A")
DT[,x := as.POSIXct( x,format = "%d/%m/%YT%H:%M:%S" )]
#code
DT[,diff.time := max(x) - min(x),by = .(rleid(Status)) ][]
# x Status test
# 1: 2017-09-14 15:30:31 A 3 secs
# 2: 2017-09-14 15:30:34 A 3 secs
# 3: 2017-09-14 16:40:25 B 1200 secs
# 4: 2017-09-14 17:00:25 B 1200 secs
# 5: 2017-09-15 09:00:20 A 3600 secs
# 6: 2017-09-15 10:00:20 A 3600 secs
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。