首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lubridate修复时间单位

Lubridate修复时间单位
EN

Stack Overflow用户
提问于 2017-06-21 15:42:20
回答 4查看 190关注 0票数 0

当我们取两个时间的差时,会有一些东西自动地在单位里发生。

代码语言:javascript
复制
> ymd_hms("2016-05-09 15:17:03") - ymd_hms("2016-05-09 15:17:04")
Time difference of -1 secs
> ymd_hms("2016-05-09 16:17:03") - ymd_hms("2016-05-09 15:17:04")
Time difference of 59.98333 mins
> ymd_hms("2016-05-10 16:17:03") - ymd_hms("2016-05-09 15:17:04")
Time difference of 1.041655 days

如何在不使用difftime函数的情况下修复设备。

因此,我可以执行以下操作:

代码语言:javascript
复制
VECTOR = c(ymd_hms("2016-05-10 16:17:03"),
           ymd_hms("2016-05-10 17:19:33"),
           ymd_hms("2016-05-10 19:55:03")
         )

diffs = diff(VECTOR)

IntervalsInHours = toHours(diffs)

另外,有没有办法知道lubridate time对象中使用的单位。例如,

代码语言:javascript
复制
> ymd_hms("2016-05-09 15:17:03") - ymd_hms("2016-05-09 15:17:04")
Time difference of -1 secs

这里使用的单位是seconds

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-06-21 21:05:45

“您希望使用diff函数来获取矢量元素之间的时间差,仅以指定的单位表示。”

请尝试下面的代码:(通过int_diff函数)

代码语言:javascript
复制
> VECTOR = c(ymd_hms("2016-05-10 16:17:03"),
+            ymd_hms("2016-05-10 16:17:04"),
+            ymd_hms("2016-05-10 17:19:33"),
+            ymd_hms("2016-05-10 19:55:03")
+ )
> as.numeric(int_diff(VECTOR))
[1]    1 3749 9330
> round(as.numeric(int_diff(VECTOR))/3600,2)
[1] 0.00 1.04 2.59

看,无论时间间隔最小单位是秒还是非秒,它总是以秒为单位进行缩放,如下所示。

代码语言:javascript
复制
> VECTOR = c(ymd_hms("2016-05-10 16:17:03"),
+            #ymd_hms("2016-05-10 16:17:04"),
+            ymd_hms("2016-05-10 17:19:33"),
+            ymd_hms("2016-05-10 19:55:03")
+ )
> as.numeric(int_diff(VECTOR))
[1] 3750 9330
> round(as.numeric(int_diff(VECTOR))/3600,2)
[1] 1.04 2.59
票数 1
EN

Stack Overflow用户

发布于 2017-06-21 16:26:16

请在下面尝试将时差转换为小时。

代码语言:javascript
复制
library(lubridate)
x=ymd_hms("2016-05-09 16:17:03") 
y=ymd_hms("2016-05-19 15:17:04")
diffs=as.duration(x-y)
IntervalsInHours=as.numeric(abs(diffs))/3600;IntervalsInHours
票数 1
EN

Stack Overflow用户

发布于 2017-06-21 16:53:19

或者您可以这样使用:

代码语言:javascript
复制
library(lubridate)
x=ymd_hms("2016-05-09 16:17:03") 
y=ymd_hms("2016-05-19 16:17:04")
diffs=as.duration(x-y);
IntervalsInHours=abs(diffs)/dhours(1);IntervalsInHours
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44669794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档