我想创建一个函数来从文件名列表中检测月份名称,并将月份名称替换为数值。我们可以使用字典来创建这样的函数并应用于列表吗?
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")
表示新列表。
使用内置的
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")