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

时间:2016-03-05 22:10:46

标签: r time 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链接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

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

1 个答案:

答案 0 :(得分:1)

您可以使用lubridate&#39; int_length来计算interval的长度,这就是您真正拥有的长度。它以秒为单位计算时间,因此根据需要进行划分以更改单位:

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

返回

 [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