【发布时间】:2018-01-10 16:40:09
【问题描述】:
我在这里已经有一个类似的问题: R - How to choose files by dates in file names?
但我必须做一点改变。
我还有一个文件名列表,类似于:
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-199410多年了 -
当然,至少10年!它也可以更多。但是 1973-1994 并不好,因为我对 1993-2003 的时间很感兴趣。并且该文件在该期间仅包含 1 年。抱歉,当时不清楚。我想要包含 1993-2003 年的文件。我想排除上面提到的文件,因为它在那个时期只有 1 年,我只想要至少有 10 年的文件。所以 1993-2010 年左右也可以。
-
我猜你可能需要提到它应该是 10 或 10 的倍数
-
什么意思?
-
顺便说一句,在你给的
list中,你想选择的只是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"`
标签: r date long-filenames