Если количество символов может измениться в имени файла , регулярное выражение может найти год и месяц для вас. Мне нравится str_match
от пакета stringr
.
library(stringr)
extract <- str_match(vec, "([0-9]{2})\\.([0-9]{2}).xls")
vec[order(rank(extract[,2]))]
Таким образом, если вы решили, что вы хотели один заказ день в месяц, вы можете изменить последнюю строку 2
в 3
.
Если вы хотите, чтобы спускались годы, добавьте к нему rev
. Например, vec[rev(order(rank(extract[,2])))]
Великая вещь о str_match
заключается в том, что она сообщает вам, что она соответствует, и создает столбцы для токенов, которые вы положили в скобки. Затем вы можете подмножать эти столбцы, как любой другой фрейм данных.
extract
[,1] [,2] [,3]
[1,] "07.02.xls" "07" "02"
[2,] "15.12.xls" "15" "12"
[3,] "01.02.xls" "01" "02"
Пример
vec <- c("xxxxxxxx_xxxxxx 07.02.xls", "xxxxx_xxx 15.12.xls", "xxxxx_xxxxxx 01.02.xls")
extract <- str_match(vec, "([0-9]{2})\\.([0-9]{2}).xls")
vec[order(rank(extract[,2]))]
[1] "xxxxx_xxxxxx 01.02.xls" "xxxxxxxx_xxxxxx 07.02.xls" "xxxxx_xxx 15.12.xls"
#or reversed
vec[rev(order(rank(extract[,2])))]
[1] "xxxxx_xxx 15.12.xls" "xxxxxxxx_xxxxxx 07.02.xls" "xxxxx_xxxxxx 01.02.xls"
@JabberwockyDecompiler язык R (из тега). – Gregor