我在R中有大约2,000行的小标题。它是使用read_excel从Excel导入的。字段之一是日期字段:dob。它以字符串形式导入,并且具有三种格式的日期:
"YYYY-MM-DD"
"DD-MM-YYYY"
"XXXXX" (ie, a five-digit Excel-style date)
假设我将列视为向量。
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中更改它们并重新导入,但是我觉得这很欺骗!
答案 0 :(得分:1)
我们在第一轮运行之后根据NA
值创建一个逻辑索引,并使用它为第二轮运行建立索引
i1 <- is.na(dob_fixed)
dob_fixed[i1] <- as.Date(as.integer(dob[i1]), origin = "1899-12-30")