【发布时间】:2021-12-31 05:09:44
【问题描述】:
我正在尝试从文本中提取日期并在数据集中创建一个新列。在 A1 列中以不同的格式输入日期(mm-dd-yy 或 mm-dd)。我需要找到一种方法来识别 A1 列中的日期,然后在缺少年份时添加年份。到目前为止,无论格式如何,我都能够提取日期;但是,当我在新列 A2 上使用 as.Date 时,mm-dd 格式的日期变为<NA>。我知道对于这种情况可能没有直接的解决方案,但是解决方法(可推广到更大的数据集)会很棒。这一年将从 2019 年 9 月到 2020 年 8 月。此外,我不确定为什么我在 as.Date 函数中使用的格式无法控制日期的显示方式。后一个问题并不那么重要,但我对 R 函数的行为感到惊讶。非常感谢 tidyverse 中的解决方案。
library(tidyverse)
library(stringr)
db <- data.frame(A1 = c("review 11/18", "begins 12/4/19", "3/5/20", NA, "deadline 09/5/19", "9/3"))
db %>% mutate(A2 = str_extract(A1, "[0-9/0-9]+"))
# A1 A2
#1 review 11/18 11/18
#2 begins 12/4/19 12/4/19
#3 3/5/20 3/5/20
#4 <NA> <NA>
#5 deadline 09/5/19 09/5/19
#6 9/3 9/3
db %>% mutate(A2 = str_extract(A1, "[0-9/0-9]+")) %>%
mutate(A2 = A2 %>% as.Date(., "%m/%d/%y"))
# A1 A2
# 1 review 11/18 <NA>
# 2 begins 12/4/19 2019-12-04
# 3 3/5/20 2020-03-05
# 4 <NA> <NA>
# 5 deadline 09/5/19 2019-09-05
# 6 9/3 <NA>
【问题讨论】: