我的代码:
axis.Date(1,sites$date, origin="1960-10-01")
错误:
Error in as.Date.numeric(x) : 'origin' must be supplied
当我在上面的代码中提供它时,为什么要问我原点?
答案 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”。
(我提到这一点是为了防止您有时需要添加原点,而有时则不需要。)