【问题标题】:as.Date() not giving desired result. (giving NA)as.Date() 没有给出想要的结果。 (给 NA)
【发布时间】:2018-10-02 16:38:47
【问题描述】:

我将包含日期列的 .xlsx 文件读入 R 并将其转换为数据框。 某些日期列被正确读取,但大多数其他列正在转换为“43116”格式。 任何使用 as.Date(, origin= , format=) 将其转换为 Date 的尝试都将返回 NA。 我已经尝试了所有可能的解决方案,例如使用'stringAsFactors = FALSE'、POSIT 和检查 excel 文件的日期格式,但没有任何效果。 请帮忙。

【问题讨论】:

  • 读入的是字符还是数字
  • @Mike 所有源列都是日期格式。但其中一些被阅读的是字符类型。
  • 你能贴出你的代码吗?
  • @Ryan 在 R 中,尝试将“43129”分配给变量。如何在不获取 NA 的情况下将其转换为日期格式?
  • @Mike 我找到了解决办法。我试图处理一个较短的数据文件,它给出了正确的结果。然而,在处理整个数据集时,由于数据不干净,出现了错误的结果。即使列中的一个条目与正常的日期格式不同,整个列也被转换为“字符”类型而不是日期格式。不过,您还能尝试为我在此线程上为 Ryan 发布的查询找到解决方法吗?

标签: r as.date


【解决方案1】:

如果没有提供数据很难重现问题,但是如果要将数字 43129 或字符“43129”转换为 R 日期,则应执行以下操作:

a <- 43129
b <- '43129'

format(as.Date(a, origin = "1899-12-30"), '%Y-%m-%d')
[1] "2018-01-29"

format(as.Date(as.integer(b), origin = "1899-12-30"), '%Y-%m-%d')
[1] "2018-01-29"

我使用的是 yyyy-mm-dd 格式,但如果格式正确,任何其他日期格式都可以使用。 希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 2021-08-29
    • 2013-10-26
    • 2021-03-02
    • 1970-01-01
    • 2017-08-25
    • 2021-12-10
    • 2018-10-17
    • 2019-11-27
    • 1970-01-01
    相关资源
    最近更新 更多