首页 > 解决方案 > 如何在 R 中转换 1970 年之前的日期?

问题描述

以下是我的数据框中的一列,采用字符格式

             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

标签: rlubridate

解决方案


您可以使用随时解析它而不需要格式的包:

代码

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>

推荐阅读