2016-03-05 37 views
0

我试图在R中使用lubridate获取数据帧的时差col2-col1。 这是我的格式为:使用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 

(这里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

您可以使用lubridateint_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