以下是我的数据框中以字符格式显示的一列
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
我该如何纠正前两个观察结果,以使dob
是1967-04-04
而不是2067-04-04
答案 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>