如何使用Lubridate将Excel日期格式转换为正确的日期

时间:2017-04-05 11:55:18

标签: r lubridate

我正在使用csv,不幸的是,它使用42705的数字格式记录了日期时间,尽管它应该是2016年12月1日。

我想使用Lubridate或其他软件包将其转换为R中的正确格式。是否有能够处理它的功能?

4 个答案:

答案 0 :(得分:46)

您不需要使用lubridate,基本函数as.Date可以很好地处理这种类型的转换。诀窍是你必须提供原点,在Excel中是1899年12月30日。

as.Date(42705, origin = "1899-12-30")
# [1] "2016-12-01"

如果要保留列类型,可以尝试使用read_excel包中的readxl函数。这使您可以加载保留数字格式的XLS或XLSX文件。

答案 1 :(得分:7)

以下是使用janitor和tibble包的另一种方法:

install.packages("janitor")
install.packages("tibble")

library(tibble)
library(janitor)

excel_numeric_to_date(as.numeric(as.character(YourDate)), date_system = "modern")    

答案 2 :(得分:7)

openxlsx软件包还允许xls日期转换:

openxlsx::convertToDate(42705)
[1] "2016-12-01"

答案 3 :(得分:0)

正如人们所说,非常好的选择:

as.Date(42705, origin = "1899-12-30")

openxlsx::convertToDate(42705)

另一种方式也可以是:

format(as.Date(as.Date("1899-12-30") + 42705, "%d-%m-%Y"), "%d-%m-%Y")

请注意,您可以更改写入 %d-%m-%Y

的输出格式

(首先将as.numeric作为字符导入!,或者在公式中进行转换:

format(as.Date(as.Date("1899-12-30") + as.numeric( number formatted as character), "%d-%m-%Y"), "%d-%m-%Y")