必须提供R日期"原产地"

Nat*_*ate 45 r date

我的代码:

axis.Date(1,sites$date, origin="1960-10-01")
Run Code Online (Sandbox Code Playgroud)

错误:

Error in as.Date.numeric(x) : 'origin' must be supplied
Run Code Online (Sandbox Code Playgroud)

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

Dir*_*tel 38

我怀疑你的意思是:

axis.Date(1, as.Date(sites$date, origin = "1960-10-01"))
Run Code Online (Sandbox Code Playgroud)

作为'x'参数as.Date()必须是类型Date.

顺便说一句,这可以作为您之前问题的后续或编辑.

  • 哎呀。接得好。十年唯一的错字!更好的是,现在使用 `anytime::anydate(sites$date)` :-) (2认同)

ken*_*yut 19

我的R使用1970-01-01:

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

这符合计算

>as.numeric(as.Date(15103, origin="1970-01-01"))
Run Code Online (Sandbox Code Playgroud)

  • 我的也是,为什么每个 R 使用不同的起始日期? (2认同)
  • 我知道这是旧帖子。但是,每当我运行此命令时,我在日期列中都会得到“ NA”。我的约会格式为`20150521` (2认同)

小智 10

所以通常这已经解决了,但您可能会收到此错误消息,因为您使用的日期格式不正确。

我知道这是一个旧帖子,但是每当我运行它时,我的日期列一直都是 NA。我的日期采用这种格式 20150521 – NealC 2015 年 6 月 5 日 16:06

如果您有这种格式的日期,只需检查您的日期格式:

str(sides$date)
Run Code Online (Sandbox Code Playgroud)

如果格式不是字符,则对其进行转换:

as.character(sides$date)
Run Code Online (Sandbox Code Playgroud)

对于 as.Date,您将不再需要原点,因为它仅为数值提供。因此你可以使用(假设你有 NealC 的格式):

as.Date(as.character(sides$date),format="%Y%m%d")
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助你们中的一些人。


ily*_*yas 6

如果您在数值中同时包含日期和时间信息,请使用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"
Run Code Online (Sandbox Code Playgroud)


sbh*_*bha 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"
Run Code Online (Sandbox Code Playgroud)

来自文档:

Origin是POSIXct格式的1970-01-01 UTC的日期时间.此日期时间是POSIXct,POSIXlt,chron和Date类使用的编号系统的原点.