【问题标题】:How to convert the proper class in R如何在 R 中转换正确的类
【发布时间】:2022-02-22 19:10:46
【问题描述】:

我试图将类从字符转换为显示错误的日期 charToDate(x) 中的错误: 字符串不是标准的明确格式

dput(my_data$exit_date)
c("0000-00-00", "2019-08-25", "2019-12-31", "2020-04-02", "2020-09-15", 
"0000-00-00", "0000-00-00", "0000-00-00", "2019-12-08", "0000-00-00", 
"2020-11-30", "2020-09-01", "0000-00-00", "2020-02-15", "2020-07-24", 
"2021-03-22", "2020-07-03", "2020-03-26", "2020-02-24", "2019-05-15", 
"0000-00-00", "2020-01-28", "0000-00-00", "0000-00-00", "0000-00-00", 
"0000-00-00", "0000-00-00", "0000-00-00", "2021-03-22", "2021-03-25", 
"2021-03-22", "0000-00-00", "0000-00-00", "0000-00-00", "0000-00-00", 
"0000-00-00")

my_data$exit_date <- as.Date(my_data$exit_date)

【问题讨论】:

    标签: r lubridate


    【解决方案1】:

    您需要指定日期的格式。错误可能是因为它无法从 0s 的初始日期开始猜测。

    d1 <- c("0000-00-00", "2019-08-25", "2019-12-31", "2020-04-02", "2020-09-15", 
      "0000-00-00", "0000-00-00", "0000-00-00", "2019-12-08", "0000-00-00", 
      "2020-11-30", "2020-09-01", "0000-00-00", "2020-02-15", "2020-07-24", 
      "2021-03-22", "2020-07-03", "2020-03-26", "2020-02-24", "2019-05-15", 
      "0000-00-00", "2020-01-28", "0000-00-00", "0000-00-00", "0000-00-00", 
      "0000-00-00", "0000-00-00", "0000-00-00", "2021-03-22", "2021-03-25", 
      "2021-03-22", "0000-00-00", "0000-00-00", "0000-00-00", "0000-00-00", 
      "0000-00-00")
    
    as.Date(d1, format = "%Y-%m-%d")
    

    看到您将其标记为lubridate(无论如何我都会使用它),这就是您将如何做到的。

    lubridate::ymd(d1)
    

    【讨论】:

    • 感谢您的回答,但我有一个疑问,为什么 00 会自动变成 NA
    • @Fariya 没有年份 0,也没有任何年份的第 0 个月,也没有任何月份的第 0 天,因此它不可能是真实的日期。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    相关资源
    最近更新 更多