如何在R中转换1970年之前的日期?

时间:2019-11-12 17:55:51

标签: r lubridate

以下是我的数据框中以字符格式显示的一列

             DateOfBirth
1:  4/4/1967 12:00:00 AM
2:  4/4/1967 12:00:00 AM
3: 11/1/2001 12:00:00 AM

我使用以下代码将其转换为日期格式,以便稍后可以计算出年龄

library(lubridate)

df$dob<-format(as.Date(df$DateOfBirth,format="%m/%d/%Y %H:%M:%S"),format="%m-%d-%y")
df$dob<-mdy(df$dob)

但是,1970年以前的日期的输出结果采用以下方式

             DateOfBirth        dob
1:  4/4/1967 12:00:00 AM 2067-04-04
2:  4/4/1967 12:00:00 AM 2067-04-04
3: 11/1/2001 12:00:00 AM 2001-11-01

我该如何纠正前两个观察结果,以使dob1967-04-04而不是2067-04-04

1 个答案:

答案 0 :(得分:0)

您可以使用anytime包来解析此包,而无需格式:

代码

df <- data.frame(DateOfBirth=c("4/4/1967 12:00:00 AM", "4/4/1967 12:00:00 AM",
                               "11/1/2001 12:00:00 AM"))

df$date <- anytime::anydate(df$DateOfBirth)

df

输出

R> df <- data.frame(DateOfBirth=c("4/4/1967 12:00:00 AM", "4/4/1967 12:00:00 AM",
+                                "11/1/2001 12:00:00 AM"))
R> df$date <- anytime::anydate(df$DateOfBirth)
R> df
            DateOfBirth       date
1  4/4/1967 12:00:00 AM 1967-04-04
2  4/4/1967 12:00:00 AM 1967-04-04
3 11/1/2001 12:00:00 AM 2001-11-01
R>