设置日期时间对象之间的差异单位

Joh*_*ton 10 r time-series

diff命令以R日期格式返回日期向量中日期之间的差异.我想控制返回的单位,但似乎它们是自动确定的,无法用参数控制它.这是一个例子:

 > t = Sys.time() 
 > diff(c(t, t + 1))
 Time difference of 1 secs
Run Code Online (Sandbox Code Playgroud)

但是:

> diff(c(t, t+10000))
Time difference of 1.157407 days
Run Code Online (Sandbox Code Playgroud)

"时间增量"对象有一个单位属性,但编写一堆条件来强制将所有内容强制为几天,几秒等等似乎很愚蠢.

Ian*_*ows 13

我不确定"一堆条件"是什么意思,只是手动更改单位.

> t = Sys.time()
> a <- diff(c(t,t+1))
> b <- diff(c(t, t+10000))
> units(a) <- "mins"
> units(b) <- "mins"
> a
Time difference of 0.01666667 mins
> b
Time difference of 166.6667 mins
Run Code Online (Sandbox Code Playgroud)

?difftime.如果你只需要用来diff获得两次之间的差异(而不是更长的向量),那么,正如Dirk建议的那样,使用difftimeunits参数的函数.


Dir*_*tel 9

一个POSIXct类型(通过调用创建Sys.time())总是使用小数秒以来的时代.

这些difftime()功能只是为了您的阅读乐趣而不同地格式化.如果您实际指定了格式,则可以获得指定的内容:

R> difftime(t+ 10000,t,unit="secs")
Time difference of 10000 secs
R> difftime(t+ 10000,t,unit="days")
Time difference of 0.115741 days
R> 
Run Code Online (Sandbox Code Playgroud)


dar*_*zig 6

我认为您需要difftime在其中指定所需的单位.看到:

> difftime(Sys.time(), Sys.time()+10000)
Time difference of -2.777778 hours

> difftime(Sys.time(), Sys.time()+10000, units="secs")
Time difference of -10000 secs
Run Code Online (Sandbox Code Playgroud)