大型数据帧是否能润滑故障?

问题描述 投票:0回答:1

我有一个很大的

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
噎住?或者它是否检查解析前多少条记录的能力,然后放弃?我还缺少其他方面吗?

注意:我无法创建一个可重现的示例,因为我无法确定它的韵律或原因。这是我能够得到我的代码的最精简的。如果您对从哪里开始创建可重现示例有建议,我欢迎它们。

r dplyr lubridate
1个回答
0
投票

感谢评论中的@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. 
© www.soinside.com 2019 - 2024. All rights reserved.