我正在使用一个csv文件,不幸的是它记录日期时间时使用了42705这种数字格式,但应该是01/12/2016。
我想在R中使用lubridate或其他软件包将其转换为正确的格式。是否有一个函数可以处理它?
as.Date
函数中可以让你回到1/12/2016。你确定你从Excel中正确地复制了这个数字吗? - Andrew Brēzaas_datetime(Date, origin = "1969-12-31 24:00:00")
- Clément LVD这里有另一种使用 janitor 和 tibble 包的方法:
install.packages("janitor")
install.packages("tibble")
library(tibble)
library(janitor)
excel_numeric_to_date(as.numeric(as.character(YourDate)), date_system = "modern")
openxlsx
包还允许 xls
date
转换:
openxlsx::convertToDate(42705)
[1] "2016-12-01"
正如 @Suren 建议的那样,convertToDateTime
允许进行datetime
转换:
openxlsx::convertToDateTime(42705.5)
[1] "2016-12-01 12:00:00"
convertToDateTime
是日期时间类型,则进行转换。 - kangaroo_cliffdatetime
。 - Waldi正如所说,非常好的选择:
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")
如果您正在使用data.table包,您可以使用as.IDate()
来实现:
require(data.table)
as.IDate(42705, origin = "1899-12-30")
# [1] "2016-12-01"
这里的作用类似于base::as.Date()
。
df$Procedure.Date <- convert_to_date(df$Procedure.Date, character_fun = lubridate::dmy, string_conversion_failure = "warning")