【问题标题】:How to convert character and dates to dates?如何将字符和日期转换为日期?
【发布时间】:2019-11-15 16:12:02
【问题描述】:

我的数据来自excel。日期为 dd/mm/yyyy 格式:

certificado$fecha <- c("22/02/2019", "43679", "22/02/2019", "22/01/2019", "28/10/2019", 
"18/09/2019")

但是,R 将某些日期读取为 mm/dd/yyyy。我的代码应该将它们全部转换为特定格式。

certificados$Fecha <- as.Date(certificados$Fecha,format = "%d/%m/%Y")

但由于日期格式问题,我得到了 NA。

【问题讨论】:

  • 日期的格式与您显示的不同:"22/02/2019", "43679"。因此,您不能只使用"%d/%m/%Y" 来解析该列,您可能需要先清理数据。
  • 您似乎获得了(在某些时候)在 Excel 中的数据。如果它最初是在 Excel 中创建/获取的,我建议一种方法是先标准化 there 的数据,然后处理导入到 R 中的过程。当然有一些技巧可以尝试解析所有这些(我很快就会寻找我以前的答案),但修复源是一种非常受欢迎的方法,IMO。

标签: r lubridate


【解决方案1】:

如果您无法从源头解决此问题,此代码会同时找到两种格式:

vec <- c("22/02/2019", "43679", "22/02/2019", "22/01/2019", "28/10/2019", "18/09/2019")
out <- as.Date(vec, format = "%d/%m/%Y")
out
# [1] "2019-02-22" NA           "2019-02-22" "2019-01-22" "2019-10-28" "2019-09-18"

isna <- is.na(out)
out[isna] <- as.Date(as.integer(vec[isna]), origin = "1900-01-01")
out
# [1] "2019-02-22" "2019-08-04" "2019-02-22" "2019-01-22" "2019-10-28" "2019-09-18"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 2011-11-28
    • 1970-01-01
    • 2011-09-08
    • 2012-05-29
    • 2014-03-23
    相关资源
    最近更新 更多