使用 lubridate 格式化多个日期样式时遇到问题

Trouble formatting multiple date styles with lubridate

我正在格式化包含记录日期的一列。列中有多种日期格式,我需要将它们转换为一种一致的格式。

我尝试使用 lubridate() 和 parse_date_time() 函数。 我还尝试将该列作为一个字符和一个因素

这是日期列的样子(超过 100,000 行)

Date.of.Record 
2018-01-01     
20180102     
2018/01/03  
2018-01-04  
2018-01-05
20180106 

我喜欢将它们格式化为:

Date.of.Record 
20180101     
20180102     
20180103  
20180104  
20180105
20180106 

这是我试过的代码:

library(lubridate)
date <- parse_date_time(bind$Date.of.Record, orders =c(ymd()))
date2 <- as.Date(bind$Date.of.Record, "%yyyy-%mm-%dd")

“日期”的代码根本不起作用,'date2' 的代码生成所有 NA。

我意识到我可以按日期格式将数据子集化为不同的数据集,然后在我正确格式化后合并,但我希望有一种更有效的方法来做到这一点。我对 R 还是个新手,尝试学习处理大型数据集的最佳方法

感谢您的帮助!!!

一个选项是 anydate 来自 anytime

library(anytime)
bind$Date.of.Record <- format(anydate(bind$Date.of.Record), "%Y%m%d")
bind$Date.of.Record
#[1] "20180101" "20180102" "20180103" "20180104" "20180105" "20180106"

如果需要是数字,用as.numeric

换行

orders 将是字符串格式

library(lubridate)
format(parse_date_time(bind$Date.of.Record, orders = "ymd"), "%Y%m%d")
#[1] "20180101" "20180102" "20180103" "20180104" "20180105" "20180106"

数据

bind <- structure(list(Date.of.Record = c("2018-01-01", "20180102", "2018/01/03", 
 "2018-01-04", "2018-01-05", "20180106")), class = "data.frame", 
 row.names = c(NA, -6L))