使用 str_detect 获取列表中的月份名称,并将其替换为 r

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

我想创建一个函数来从文件名列表中检测月份名称,并将月份名称替换为数值。我们可以使用字典来创建这样的函数并应用于列表吗?

f <- c("cm18OCT2023.csv", "cm22NOV2023.csv")

month_text <- c("JAN" = "01",
                "FEB" = "02",
                "MAR" = "03",
                "APR" = "04",
                "MAY" = "05",
                "JUN" = "06",
                "JUL" = "07",
                "AUG" = "08",
                "SEP" = "09",
                "OCT" = "10",
                "NOV" = "11",
                "DEC" = "12")



newnames <- ifelse(str_detect(f, names(month_text)), new_names, f)

最终输出可以是新名称,例如

paste0("23", value(month_text), str_sub(3,4),".csv")
表示新列表。

r string file-rename
1个回答
0
投票

使用内置的

month.abb
,您可以更便宜。

> sprintf('%02d', match(f, toupper(month.abb)))
 [1] "08" "12" "06" "10" "09" "01" "02" "04" "03" "11" "07" "05"

数据:

> dput(f)
c("AUG", "DEC", "JUN", "OCT", "SEP", "JAN", "FEB", "APR", "MAR", 
"NOV", "JUL", "MAY")
© www.soinside.com 2019 - 2024. All rights reserved.