我试图使用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
有什么建议吗?我快到了...... :(
答案 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