首页 > 解决方案 > 重新格式化不正确的日期

问题描述

目前,我正在研究 RStudio 的 Retrosheet 数据框,不喜欢日期格式并想更改它。

devtools::install_github("rmscriven/retrosheet")

然后我导入了我想使用的数据框

GL17 <- getRetrosheet("gamelog", 2017)

数据框日期向量的格式为 YYYYMMDD,但没有正确的格式,例如20170402,但我想将其更改为显示,例如2017-04-02我尝试过as.Date(GL17$Date, "Y%d%m%")的返回为

Error in charToDate(x) : character string is not in a standard unambiguous format

这很有意义。有没有比编辑(GL17)更容易操纵整个向量的另一种方法,它需要永远并且通常不起作用。

标签: rdate

解决方案


“... YYYYMMDD没有正确的格式,例如 20170402 但我想将其更改为例如显示为 2017-04-02 我尝试过 as.Date(GL17$Date, "Y%d%m%" ) 以“

它的 YYYYMMDD 但你做了 "Y%d%m" 这在两个级别上是错误的 - 缺少 % 和 m 和 d 的顺序错误:

> as.Date("20100331","Y%d%m")
[1] NA
> as.Date("20100331","%Y%d%m")
[1] NA

使用正确的格式,这有效:

> as.Date("20100331","%Y%m%d")
[1] "2010-03-31"

但请注意,我上面的错误不会重现您的错误,因此您一定做错了其他事情。也许您的日期实际上是大数字:

> as.Date(20100331,"%Y%m%d")
Error in charToDate(x) : 
  character string is not in a standard unambiguous format

这似乎总是给出与您得到的相同的错误。将数字转换为字符并重试:

> as.Date(as.character(20100331),"%Y%m%d")
[1] "2010-03-31"

推荐阅读