r - 从R中的日期解析多种格式的字符串

标签 r date

我在R中有约2000行。它是使用read_excel从Excel导入的。字段之一是日期字段:dob。它以字符串形式导入,并且具有三种格式的日期:

"YYYY-MM-DD"
"DD-MM-YYYY"
"XXXXX"  (ie, a five-digit Excel-style date)

假设我将列视为 vector 。
dob <- c("1969-02-02", "1986-05-02", "34486", "1995-09-05", "1983-06-05",
         "1981-02-01", "30621", "01-05-1986")

我可以看到我可能需要同时使用parse_date_time和as.Date的解决方案。

如果我使用parse_date_time:
dob_fixed <- parse_date_time(dob, c("ymd", "dmy"))

这将修复所有问题,但五位数字返回NA。

我可以使用as.integer和as.Date来固定五位数:
dob_fixed2 <- as.Date(as.integer(dob), origin = "1899-12-30")

理想情况下,我会先运行一个,然后运行另一个,但是因为每个都在不起作用的字符串上返回NA,所以我不能这样做。

有什么建议吗?我可以简单地在Excel中更改它们并重新导入,但是我觉得那是作弊!

最佳答案

我们在第一次运行后根据NA值创建一个逻辑索引,并使用该索引为第二次运行建立索引

i1 <- is.na(dob_fixed)
dob_fixed[i1] <- as.Date(as.integer(dob[i1]), origin = "1899-12-30")

关于r - 从R中的日期解析多种格式的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54275844/

相关文章:

r - 如何对 "Origin-Destination"数据帧进行分组求和?

r - R 中高清动画视频的最佳实践

java - Android日期选择器计算,特定日期之前和之后

r - 下一个行为如何发生(Hmisc 何时/何地导出 `[` )以及在哪里解决它?

在数据框中有条件地删除下面的行并在 R 中将值一起添加

php - 数据库中的日期格式与输出不同

java - Play Framework : Pass date to view

mysql - 如何使sql语句显示在两个日期之间?

r - R 中 K-Modes 聚类的稳定性

javascript - 获取周数但每周五更改为下一周的脚本