如何计算R

时间:2016-03-25 17:21:04

标签: r date datetime posixct

我正在尝试在R中减去两个日期。这是通过结构命令的两个日期:

str(standard_data_4testing$start_datetime)
 POSIXct[1:489124], format: "2016-02-01 00:38:49" "2016-02-01 07:48:53" "2016-02-01 08:32:08" "2016-02-01 11:21:13" ...

str(standard_data_4testing$original_installdate)
 Date[1:489124], format: "2015-10-15" "2015-10-15" "2015-10-15" "2016-01-29" "2016-01-29" "2016-01-29" ...

我在R中创建了as.Date个函数,但start_datetime有日期和时间,而original_installdate只有原始数据中的日期,如上所示。

有没有办法减去它们?

我试图用这句话减去:

standard_data_4testing$start_datetime - standard_data_4testing$original_installdate

但是我收到了这个错误:

  

警告讯息:“ - ”的不兼容方法(“-.POSIXt”,“ - 。Date”)

打印出一些数据后:

  

[6049]“2016-02-01 09:48:44 UTC”“2016-02-01 07:24:08 UTC”“2016-02-01   09:02:33 UTC“”2016-02-01 09:14:29 UTC“[6053]”2016-02-01 10:49:46   UTC“”2016-02-01 19:07:52 UTC“”2016-02-01 02:39:04 UTC“”2016-02-01   03:59:29 UTC“[6057]”2016-02-01 07:13:05 UTC“”2016-02-01 07:58:50   UTC“NA

我也尝试过使用POSIXct,但收到了类似的错误。

我有什么方法可以减去这两个日期,尽管它们的组件有所不同吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:5)

首先将两个日期转换为POSIXct课程。请务必在同一时区进行计算,POSIXt类默认为您的语言环境时区,as.Date默认为UTC。

test1 <- as.Date("2016-01-01", tz="UTC")
test2 <- strptime("2016-01-02", format="%Y-%m-%d", tz="UTC")
difftime(as.POSIXct(test2), as.POSIXct(test1, tz="UTC"), units="days")
# Time difference of 1 days