解析多个日期格式时出现Lubridate警告

epfja78i  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(148)

我有一个数据框,其中的字符列有两种不同的日期格式,一种是mm/dd/yy,另一种是dd/mm/yyyy,所以我想使用lubridate来解析它们,并根据字符的数量进行调节。

x <- c("01/11/24", "17/11/2023", "02/25/24", "01/03/2022")
df <- as_tibble(x)
new_df <- df %>% mutate(value = if_else(nchar(value) == 8, mdy(value), dmy(value)))

字符串
这似乎会生成正确的日期列,但它会生成以下警告:

new_df
# A tibble: 4 × 1
  value     
  <date>    
1 2024-01-11
2 2023-11-17
3 2024-02-25
4 2022-03-01

Warning message:
There were 2 warnings in `mutate()`.
The first warning was:
ℹ In argument: `value = if_else(nchar(value) == 8, mdy(value), dmy(value))`.
Caused by warning:
!  1 failed to parse.
ℹ Run dplyr::last_dplyr_warnings() to see the 1 remaining warning. 
> dplyr::last_dplyr_warnings()
[[1]]
<warning/rlang_warning>
Warning in `mutate()`:
ℹ In argument: `value = if_else(nchar(value) == 8, mdy(value), dmy(value))`.
Caused by warning:
!  1 failed to parse.
---
Backtrace:
    ▆
 1. ├─df %>% ...
 2. ├─dplyr::mutate(...)
 3. └─dplyr:::mutate.data.frame(...)

[[2]]
<warning/rlang_warning>
Warning in `mutate()`:
ℹ In argument: `value = if_else(nchar(value) == 8, mdy(value), dmy(value))`.
Caused by warning:
!  1 failed to parse.
---
Backtrace:
    ▆
 1. ├─df %>% ...
 2. ├─dplyr::mutate(...)
 3. └─dplyr:::mutate.data.frame(...)


不知道警告告诉我什么,因为它声称1未能解析,但它似乎所有4解析正确。

atmip9wb

atmip9wb1#

我曾经遇到过类似的情况,我认为发生的情况是if_else()对整个向量(而不仅仅是逻辑子集)执行每个操作,然后丢弃不相关的部分。
我很想知道为什么会这样,尤其是在性能方面,这种行为似乎并不有益。

相关问题