使用 lubridate 获取 R 中数据帧的时差 col2-col1?

get time difference, col2-col1, for a data frame in R using lubridate?

我试图使用 lubridate 为 R 中的数据帧获取时差 col2-col1。 这是我的格式:

                   V1                   V2
1 2014-07-01 19:15:03  2014-07-01 19:19:44
2 2014-07-01 19:29:57  2014-07-01 19:34:39 
3 2014-07-01 19:44:53  2014-07-01 19:49:34 
...
28 2014-07-02 02:28:25  2014-07-02 02:33:07
29 2014-07-02 02:43:20  2014-07-02 02:47:59
30 2014-07-02 02:58:12  2014-07-02 03:02:54

(pastebin link 这里 http://pastebin.com/GfKJKqcV)

我试试这个

> lala <- hour(inicioyfin_n37_all$V2) + minute(inicioyfin_n37_all$V2)/60 + second(inicioyfin_n37_all$V2)/3600
> lolo <- hour(inicioyfin_n37_all$V1) + minute(inicioyfin_n37_all$V1)/60 + second(inicioyfin_n37_all$V1)/3600
> lala -lolo 
[1]   0.07805556   0.07833333   0.07805556   0.07805556   0.07861111
[6]   0.07750000   0.07805556   0.07833333   0.07833333   0.07805556
[11]   0.07833333   0.07777778   0.07777778   0.07805556   0.07861111
[16]   0.07805556   0.07805556   0.07777778 -23.92194444   0.07833333
[21]   0.07750000   0.07777778   0.07805556   0.07750000   0.07777778  
[26]   0.07805556   0.07805556   0.07833333   0.07750000   0.07833333

...但是如您所见,第 19 号元素不太合适。

即使我加上日值

> lala <-  day(inicioyfin_n37_all$V2) + hour(inicioyfin_n37_all$V2) + minute(inicioyfin_n37_all$V2)/60 + second(inicioyfin_n37_all$V2)/3600
> lolo <-  day(inicioyfin_n37_all$V1) + hour(inicioyfin_n37_all$V1) + minute(inicioyfin_n37_all$V1)/60 + second(inicioyfin_n37_all$V1)/3600
> lala -lolo
[1]   0.07805556   0.07833333   0.07805556   0.07805556   0.07861111   0.07750000   0.07805556
[8]   0.07833333   0.07833333   0.07805556   0.07833333   0.07777778   0.07777778   0.07805556
[15]   0.07861111   0.07805556   0.07805556   0.07777778 -22.92194444   0.07833333   0.07750000
[22]   0.07777778   0.07805556   0.07750000   0.07777778   0.07805556   0.07805556   0.07833333
[29]   0.07750000   0.07833333

有什么建议吗?我快到了...:(

您可以使用lubridateint_length来计算interval的长度,这是您真正拥有的。它以秒为单位计算时间,因此根据需要划分以更改单位:

int_length(interval(df$V1, df$V2))

returns

 [1] 281 282 281 281 283 279 281 282 282 281 282 280 280 281 283 281 281 280 281 282 279 280 281
[24] 279 280 281 281 282 279 282