冒着因提出“明显”问题而被修改的极端风险,我如何在 R 中以小时为单位找到两个日期之间的差异?

> ISOdate(2004,1,6) - ISOdate(2004,1,1)
Time difference of 5 days
> as.POSIXlt(ISOdate(2004,1,6) - ISOdate(2004,1,1))
Error in as.POSIXlt.default(ISOdate(2004, 1, 6) - ISOdate(2004, 1, 1)) :
  do not know how to convert 'ISOdate(2004, 1, 6) - ISOdate(2004, 1, 1)' to class "POSIXlt"
 > (ISOdate(2004,1,6) - ISOdate(2004,1,1))$year
Error in (ISOdate(2004, 1, 6) - ISOdate(2004, 1, 1))$year :
  $ operator is invalid for atomic vectors
> (ISOdate(2004,1,6) - ISOdate(2004,1,1))$mon
Error in (ISOdate(2004, 1, 6) - ISOdate(2004, 1, 1))$mon :
  $ operator is invalid for atomic vectors

最佳答案

使用函数 difftime 和参数 units="hours" :

x <- c(ISOdate(2004,1,6), ISOdate(2004,1,1))
difftime(x[1], x[2], units="hours")
Time difference of 120 hours

我怎么知道去哪里找?

好,先看两次相减得到的对象的结构:
str(x[1] - x[2])
Class 'difftime'  atomic [1:1] 5
  ..- attr(*, "units")= chr "days"

所以现在你知道你正在处理一类 difftime 。从这里很容易找到帮助:见 ?difftime

关于r - 如何在R中以小时为单位找到两个日期之间的差异?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12977073/

10-11 17:37