我有一个很大的
data.frame
,大约有一百万条记录。我正在尝试使用 lubridate
来修复一些日期,但我得到了奇怪的行为。当我在整个 data.frame 上运行它时,它无法解析任何记录。但是,当我根据另一个缺失的日期列过滤 data.frame
时,它设法解析除 3 之外的所有内容。(3 不是问题。)这是我的输出。
> perf3 <- perf2 %>%
select(first.half, second.half) %>%
mutate(t.reg.date3=ymd(paste0(first.half, second.half)))
Warning: There was 1 warning in `mutate()`.
ℹ In argument: `t.reg.date3 = ymd(paste0(first.half, second.half))`.
Caused by warning:
! All formats failed to parse. No formats found.
> perf3 <- perf2 %>%
filter(is.na(t.reg.date2)) %>%
select(first.half, second.half) %>%
mutate(t.reg.date3=ymd(paste0(first.half, second.half)))
Warning: There was 1 warning in `mutate()`.
ℹ In argument: `t.reg.date3 = ymd(paste0(first.half, second.half))`.
Caused by warning:
! 3 failed to parse.
lubridate
是否有某些行为会被大data.frame
噎住?或者它是否检查解析前多少条记录的能力,然后放弃?我还缺少其他方面吗?
注意:我无法创建一个可重现的示例,因为我无法确定它的韵律或原因。这是我能够得到我的代码的最精简的。如果您对从哪里开始创建可重现示例有建议,我欢迎它们。
感谢评论中的@Andy Baxter。这是一个有效的解决方法。
> perf3 <- perf2 %>%
+ select(first.half, second.half, t.reg.date2) %>%
+ mutate(t.reg.date3=parse_date_time(paste0(first.half, second.half), "%Y-%m-%d", exact = TRUE))
Warning message:
There was 1 warning in `mutate()`.
ℹ In argument: `t.reg.date3 = parse_date_time(...)`.
Caused by warning:
! 43047 failed to parse.