隐藏 R 数据框列到日期

数据挖掘 r
2022-03-12 15:33:54

我有一个 R 数据框,其中有一列包含多种格式的日期。我想将此列转换为日期格式。

虽然某些格式已转换,但其他格式则没有。为什么第二个日期没有转换?如何纠正?

代码和结果:

> slno <- c(1,2)
> Date <- c('22-04-2015', '4/8/2015')
> 
> df_data <- as.data.frame(cbind(slno,Date))
> df_data
  slno       Date
1    1 22-04-2015
2    2   4/8/2015
> 
> date_formats <- c('%m/%d/%Y', '%d-%m-%Y')
> 
> #df_data$Date <- mdy_hm(df_data$Date)
> df_data$Date <- as.Date(as.character(df_data$Date), tryFormats = date_formats, optional = F)
> 
> df_data
  slno       Date
1    1 2015-04-22
2    2       <NA>
> str(df_data)
'data.frame':   2 obs. of  2 variables:
 $ slno: chr  "1" "2"
 $ Date: Date, format: "2015-04-22" ...
> 
1个回答

包中的parse_date_time函数lubridate将执行此操作。这个函数接受一个orders类似于tryFormats“as.Date”中的参数的参数,除了允许的格式更慷慨和类似润滑(没有标点符号、分隔符等)。例如,您可以设置orders = c("dmy", "mdy").

Date <- c('22-04-2015', '4/8/2015')
parse_date_time(Date, orders = c("dmy", "mdy"))
"2015-04-22 UTC" "2015-08-04 UTC"