r - 如何在 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
我如何纠正前两个观察结果,以便它dob
是1967-04-04
而不是2067-04-04
解决方案
您可以使用随时解析它而不需要格式的包:
代码
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>
推荐阅读
- python - 如何使多个目录的 SQLite 数据库目录动态路径?
- javascript - 如何在 Wicket 中重新编码 ajax 行为或阻止请求
- android - 从画廊返回后,不在 Fragment 中调用 onActivityResult
- javascript - 当前时间最接近半小时与下一小时时间
- javascript - 有没有办法访问 ckeditor 元素的原始属性?
- docker - Windows 或非 Linux 操作系统容器如何在 Docker 中工作?
- bootstrap-4 - 与同位素过滤器冲突的 bootstrap 组件“崩溃”
- excel - 复制并粘贴列中的最后 5 个活动单元格
- testing - 哪些测试工具和方法支持 12 因子应用程序
- c++ - conan create 找不到依赖项