gpt4 book ai didi

mysql - 按组计算时间差

转载 作者:可可西里 更新时间:2023-11-01 08:03:37 25 4
gpt4 key购买 nike

我有一个关于计算不同源和目标的时间差的问题。

Table1:         

Source Target Time TimeDif(wrong) (right)
1.2.3.4 2.3.4.5 2012-01-03 21:50:40 3 3
1.2.3.4 2.3.4.5 2014-01-03 21:50:43 5 5
1.2.3.4 2.3.4.5 2014-01-03 21:50:48 3 NULL
2.2.2.2 4.4.4.4 2014-01-03 21:50:51 3 4
2.2.2.2 4.4.4.4 2014-01-03 21:50:55 4 4
2.2.2.2 4.4.4.4 2014-01-03 21:50:59 4 NULL
.... .... ......

现在我用以下方法计算时差:

diffTime <- difftime(time[1:(length(time)-1)] , time[2:length(time)]) * -1

问题是通过这种方法计算的时间差是不正确的。这意味着该方法计算整个列并且不在不同的源和目标之间做出任何决定。我不确定这个问题是否可以通过包 (sqldf) 来查询并将数据分组在一起。查询也应该实现该方法,但我认为这是不可能的。如果您有任何解决方案,那就太好了。

最佳答案

假设你想在 R 中做一些事情,你需要一个分组函数。例如 dplyr 中的 group_by 你可以这样做:

library(dplyr)
dat %>%
group_by(Source, Target) %>%
mutate(tdif = lead(Time) - Time)

结果:

   Source  Target                Time          tdif
<fctr> <fctr> <dttm> <time>
1 1.2.3.4 2.3.4.5 2012-01-03 21:50:40 63158403 secs
2 1.2.3.4 2.3.4.5 2014-01-03 21:50:43 5 secs
3 1.2.3.4 2.3.4.5 2014-01-03 21:50:48 NA secs
4 2.2.2.2 4.4.4.4 2014-01-03 21:50:51 4 secs
5 2.2.2.2 4.4.4.4 2014-01-03 21:50:55 4 secs
6 2.2.2.2 4.4.4.4 2014-01-03 21:50:59 NA secs

请注意,第一个 tdiff 值比您在预期输出中声明的值大得多。这很丰富,因为第一个时间戳的日期是 2012 年,而其他时间戳是 2014 年。

关于mysql - 按组计算时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40440568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com