必须提供R日期“原产地”

时间:2010-05-08 03:19:00

标签: r date

我的代码:

axis.Date(1,sites$date, origin="1960-10-01")

错误:

Error in as.Date.numeric(x) : 'origin' must be supplied

当我在上面的代码中提供它时,为什么要问我原点?

6 个答案:

答案 0 :(得分:35)

我怀疑你的意思是:

axis.Date(1, as.Date(sites$date, origin = "1960-10-01"))

因为as.Date()的'x'参数必须是Date类型。

顺便说一下,这可以作为您上一个问题的后续或编辑。

答案 1 :(得分:16)

我的R使用1970-01-01:

>as.Date(15103, origin="1970-01-01")
[1] "2011-05-09"

这与

的计算相符
>as.numeric(as.Date(15103, origin="1970-01-01"))

答案 2 :(得分:6)

另一个选择是lubridate软件包:

library(lubridate)

x <- 15103
as_date(x, origin = lubridate::origin)
"2011-05-09"

y <- 1442866615
as_datetime(y, origin = lubridate::origin)
"2015-09-21 20:16:55 UTC"

从文档中

  

起源是POSIXct格式的1970-01-01 UTC的日期时间。此日期时间是POSIXct,POSIXlt,chron和Date类使用的编号系统的来源。

答案 3 :(得分:5)

如果您在数值中同时包含日期和时间信息,请使用as.POSIXct。 Data.table包IDateTime格式就是这种情况。如果使用fwrite保存文件,则程序包会自动将日期时间转换为idatetime格式,即unix时间。要转换回正常格式,可以完成以下操作。

示例:假设您有一个包含日期和时间信息的unix时间戳:1442866615

> as.POSIXct(1442866615,origin="1970-01-01")
[1] "2015-09-21 16:16:54 EDT"

答案 4 :(得分:0)

因此,一般来说,此问题已解决,但您可能会收到此错误消息,因为您使用的日期格式不正确。

我知道这是旧帖子。但是,每当我运行此命令时,我都会在日期列中得到NA。我的日期格式为20150521 – NealC '15 Jun 5'在16:06

如果您使用这种格式的日期,请使用以下命令检查日期格式:

str(sides$date)

如果格式不是字符,则将其转换:

as.character(sides$date)

对于as.Date,您将不再需要原点,因为该原点仅用于数字值。这样就可以使用(假设您使用的是NealC格式):

as.Date(as.character(sides$date),format="%Y%m%d)

我希望这一步对您的某些人有所帮助。

答案 5 :(得分:0)

顺便说一句,

zoo 包(如果已加载)会用其自己的as.Date()覆盖基础,默认情况下会提供origin =“ 1970-01-01”。

(我提到这一点是为了防止您有时需要添加原点,而有时则不需要。)