У меня уже был подобный вопрос здесь: R - Как выбирать файлы по датам в именах файлов?
Но я должен сделать небольшое изменение.
У меня все еще есть список имен файлов, похожий на этот:
list = c("AT0ACH10000700100dymax.1-1-1993.31-12-2003",
"AT0ILL10000700500dymax.1-1-1990.31-12-2011",
"AT0PIL10000700500dymax.1-1-1992.31-12-2011",
"AT0SON10000700100dymax.1-1-1990.31-12-2011",
"AT0STO10000700100dymax.1-1-1992.31-12-2006",
"AT0VOR10000700500dymax.1-1-1981.31-12-2011",
"AT110020000700100dymax.1-1-1993.31-12-2001",
"AT2HE190000700100dymax.1-1-1973.31-12-1994",
"AT2KA110000700500dymax.1-1-1991.31-12-2010",
"AT2KA410000700500dymax.1-1-1991.31-12-2011")
У меня уже есть команда для сортировки файлов определенной длины записи (например, 10 в данном случае):
#Listing Files (creates the list above)
files = list.files(pattern="*00007.*dymax", recursive = TRUE)
#Making date readable
split_daymax = strsplit(files, split=".", fixed=TRUE)
from = unlist(lapply(split_daymax, "[[", 2))
to = unlist(lapply(split_daymax, "[[", 3))
from = as.POSIXct(from, format="%d-%m-%Y")
to = as.POSIXct(to, format="%d-%m-%Y")
timelistmax = difftime(to, from, "days")
#Files with more than 10 years of recording
index = timelistmax >= 10*360
filesdaymean = filesdaymean[index]
Моя проблема в том, что у меня слишком много файлов, и ни один компьютер не может с этим справиться.
Теперь я хочу читать только те файлы, которые содержат файлы с 1993 года (или любого другого определенного года, который я хочу) и с тех пор иметь 10-летнюю запись, поэтому записи должны быть как минимум до 2003 года.
Так что файл 1973-1994 не стоит включать, а вот файл 1981-2011 вполне подойдет.
Я не знаю, как выбрать год в этом случае.
Я благодарен за любую помощь
1973-1994
более 10 лет - person akrun   schedule 10.01.2018list
, который вы указали, вы хотите выбрать только 1, 6 и 10? В этом случаеlist[!sapply(stringr::str_extract_all(list, "(?<=-)[0-9]{4}"), function(x) diff(as.numeric(x))) %% 10 ]#[1] "AT0ACH10000700100dymax.1-1-1993.31-12-2003" "AT0VOR10000700500dymax.1-1-1981.31-12-2011" [3] "AT2KA410000700500dymax.1-1-1991.31-12-2011"
` - person akrun   schedule 10.01.2018