忽略字符串中的字符来生成 R 日期

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

我正在尝试从字符串中获取日期,例如:“ID0123122021”。 其中前两位数字是 ID,然后是月份,然后是年份。 所以它相当于“IDnnnnmmyyyy”,实际日期将是 12-2021。

我想提取最终日期。我试过了:

as.Date("ID0123122021", format = "ID%nnnn%m%Y")

正如预期的那样,它返回 NA,因为 %n 不存在 (https://www.statology.org/r-date-format/)。我也试过了

as.Date("ID0123122021", format = "ID0123%m%Y")

这也不起作用,也不会特别有用,因为 ID 可能会改变。

有什么方法可以定义要忽略的字符的格式吗?类似于

format = %iiiiii%m%Y
,其中
%i
标志意味着在构建日期时忽略此字符?

谢谢!

r string date date-formatting
2个回答
0
投票

您可以提取日期元素,插入该月的第一天,然后转换为日期对象。

library(stringr)
library(lubridate)

str_sub("ID0123122021", 7, 12) |> str_c("01") |> myd()
#> [1] "2021-12-01"

创建于 2024-04-23,使用 reprex v2.1.0


0
投票

向组合中添加正则表达式以首先提取相关部分:

date_str <- "ID0123122021"
# extract last 6 digits if led by IDxxxx
stringr::str_extract(date_str, "(?<=ID\\d{4})\\d{6}$") |> lubridate::my()
#> [1] "2021-12-01"

创建于 2024-04-23,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.