使用 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
有什么建议吗?我快到了...:(
您可以使用lubridate
的int_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
我试图使用 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
有什么建议吗?我快到了...:(
您可以使用lubridate
的int_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