【发布时间】:2016-05-04 05:19:47
【问题描述】:
我正在努力转换许多不同格式类型的字符类日期(例如,yyyy/mm/dd;mm/dd/yyyy;yyyy-mm-dd;mm-dd-yyyy;yy-mm-dd; mm-dd-yy; 等)到 POSIXlt 类。理想情况下,我想将所有birth_dates 转换为具有yyyy/mm/dd 格式的POSIXlt 类(参见下面的示例数据)。在 R 中是否有任何简单的方法可以做到这一点?:
id birth_date start_date age
102 08/09/1993 2013/09/01 20
103 1995-02-21 2013/09/01 18
104 01-15-94 2013/09/01 19
105 88-12-30 2013/09/01 24
这是我迄今为止一直在做的事情。不幸的是,考虑到原始日期格式的所有不同方式,这似乎不起作用(我最终得到的 NA 比应该有的多):
library(lubridate)
data$birth_date1<-as.Date(data$birth_date,format="%Y-%m-%d") #Convert character class to date class
data$birth_date2<-ymd(swc3$birth_date1) #Convert date class to POSIXlt class using lubridate pkg
【问题讨论】:
-
您打算如何处理不明确的日期(即“01-02-03”)?人类不可能知道正确答案是什么。
-
你可以从
lubridate使用parse_date_time -
我觉得这是一个数据清理问题,而不是编程问题。解决方案可能会涉及一些丑陋的正则表达式和临时列。