【问题标题】:datediff and Excel not matchingdatediff 和 Excel 不匹配
【发布时间】:2022-02-08 11:16:00
【问题描述】:

任何想法为什么 R 将 2 天添加到 Excel 日期?

详情: 我正在使用代码导入带有 openxlx 的 Excel 文件:

wb.temp <- loadWorkbook(filename)
data.import <- read.xlsx (wb.temp, sheet = 1, startRow = 3, colNames = TRUE, na.strings = "NA", detectDates = FALSE) 

(detectDates = TRUE 给出错误,尽管 XLSX 中的所有日期看起来都正常)

xlsx 文件的 Event_Date 字段有一些值“2022-02-07

  • R 将这些日期导入为 44599

但是,当我运行以下 r 代码将这些日期转换为 yyyy-mm-dd 时:

data.import$Event_Date <- as.Date(import.temp$Event_Date, origin = '1900-01-01')

data.import$Event_Date 在输入 44599 时取值为“2022-02-09

作为检查:

  • difftime("2022-02-07","1900-01-01") 产生 44597

那么,为什么 R 在数据导入期间将 Excel 日期添加 2 天?

谢谢

鲍勃

【问题讨论】:

  • 应该是origin = '1899-12-30'
  • 关于 1900 年 2 月 29 日,这是 Excel 的一个已知错误。这一天不存在,但 Excel 存在。此外,在 Excel 中,1900 年 1 月 1 日是第 1 天,而 R 假定它为 0。

标签: r date openxlsx


【解决方案1】:

非常感谢;我找到了另一个解决方案。

而不是使用 R as.datexlsx::convertToDate 使用以下方法解决它:

data.temp$Event_Date <- openxlsx::convertToDate(data.temp$Event_Date, origin = '1900-01-01')

https://rdrr.io/cran/openxlsx/man/convertToDate.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 2017-06-26
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多