【发布时间】:2022-01-02 14:36:55
【问题描述】:
我正在使用函数readxl::read_excel() 读取Excel 文件,但似乎无法正确读取日期。
在原始文件中,一个这样的日期是2020-JUL-13,但它被读取为44025。
有什么方法可以找回原始文件中的原始日期变量吗?
非常感谢任何指针。
谢谢,
【问题讨论】:
我正在使用函数readxl::read_excel() 读取Excel 文件,但似乎无法正确读取日期。
在原始文件中,一个这样的日期是2020-JUL-13,但它被读取为44025。
有什么方法可以找回原始文件中的原始日期变量吗?
非常感谢任何指针。
谢谢,
【问题讨论】:
基本上,你可以尝试使用:
as.Date(44025)
但是,您会注意到Error in as.Date.numeric(44025) : 'origin' must be supplied 的错误。这意味着您只需要知道来源,即开始计数的开始日期。当您检查 Bappa Das 提到的 convertToDate 函数的帮助页面时,您会看到它只是 as.Date() 函数的包装器,origin 参数的默认参数是 "1900-01-01"。
接下来,您可以通过在 Excel 中查找日期系统来检查为什么会这样,这里有一个页面:
哪里有关于 Windows(Mac 有一些例外)开始日期确实是 "1900-01-01" 的信息。
现在,最后,如果你想使用 base R,你可以这样做:
as.Date(44025, origin = "1900-01-01")
这是矢量化函数,因此您也可以传递整列。
【讨论】:
您可以使用openxlsx 包将数字转换为日期,例如
library(openxlsx)
convertToDate("44025")
或者转换整个列可以使用
convertToDate(df$date)
【讨论】: