我有以下格式的字串
NHS Workforce%20Statistics,%20April 2018%20Organisation -%20Excel%20tables.xlsx
NHS Workforce%20Statistics,%20September 2018%20Organisation.xlsx
我將如何從中提取日期?在第一個例子中,日期是 2018 年 4 月,第二個例子是 2018 年 9 月。(注意,它不會總是 2018 年)
到目前為止,我已經嘗試創建一個月份的列向量,并str_match嘗試查看是否有任何字串包含向量中的月份。然后我計劃使用正則運算式來查找包含日期的 6 位值,并選擇這些值中的最后四個。我覺得這種方式很長,使用 tidyverse 有一個更快的解決方案。
uj5u.com熱心網友回復:
提取第一個單詞及其后出現的四位數字。
基本 R 選項 -
vec <- c("NHS Workforce Statistics, April 2018 Organisation - Excel tables.xlsx",
"NHS Workforce Statistics, September 2018 Organisation.xlsx")
return_date <- function(x) {
sub('.*?([A-Za-z] ) .*(\\d{4}).*', '\\1 \\2', x)
}
return_date(vec)
#[1] "April 2018" "September 2018"
uj5u.com熱心網友回復:
請注意,檔案名中的空格被替換為 .
像下面這樣的東西會起作用(你只需要將剩下的月份添加到正則運算式中。
example <- "NHS Workforce Statistics, April 2018 Organisation - Excel tables.xlsx"
example2 <- "NHS Workforce Statistics, September 2018 Organisation.xlsx"
file_name <- str_replace_all(example, " ", " ")
str_extract(file_name, "(April|September) \\d{4}")
對于第一個示例,您將獲得:
[1] "April 2018"
uj5u.com熱心網友回復:
我們可以使用 非常快速地創建月份串列format(..., "%B),然后剩下的就是將它放入一個應該提取的模式中:
pattern <- paste0("^.*(", paste(format(ISOdate(2020,1:12,1),"%B"), collapse = "|"), ") (\\d ).*$")
gsub(pattern, "\\1 \\2", your_text)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/331446.html
