R 如何根据文件名中的日期选择目录中的文件并复制到其他文件夹
我在tempfiles1文件夹中有一组具有以下名称的文件:R 如何根据文件名中的日期选择目录中的文件并复制到其他文件夹,r,R,我在tempfiles1文件夹中有一组具有以下名称的文件: ASC05012019R.DBF ASC05012019R.NTX ASC05012019H.DBF ASC05012019H.NTX ASC05012019F.DBF ASC05012019F.NTX ROS12012019R.DBF ROS12012019R.NTX ROS12012019H.DBF ROS12012019H.NTX ROS12012019F.DBF ROS12012019F.NTX BAL25012019R.DBF
ASC05012019R.DBF
ASC05012019R.NTX
ASC05012019H.DBF
ASC05012019H.NTX
ASC05012019F.DBF
ASC05012019F.NTX
ROS12012019R.DBF
ROS12012019R.NTX
ROS12012019H.DBF
ROS12012019H.NTX
ROS12012019F.DBF
ROS12012019F.NTX
BAL25012019R.DBF
BAL25012019R.NTX
BAL25012019H.DBF
BAL25012019H.NTX
BAL25012019F.DBF
BAL25012019F.NTX
ROK20012019R.DBF
ROK20012019R.NTX
ROK20012019H.DBF
ROK20012019H.NTX
ROK20012019F.DBF
ROK20012019F.NTX
每个文件名都有3个不同的字母开头,但后面都有一个日期,格式为ddmmyyyy
如上图所示,文件夹中还有其他文件,如R.NTX、H.NTX或F.NTX等,但我只查找扩展名为R.DBF、H.DBF和F.DBF的文件
我希望从一个日期范围(比如05012019到22012019)中进行选择,并将所有R.DBF、H.DBF和F.DBF文件复制到另一个文件夹tempfiles2
我已能够指定我的文件夹:
current_folder <- "G:/m/HR/tempfiles1"
new_folder <- "G:/m/HR/tempfiles2"
但是我不知道如何选择日期
使用05012019到22012019之间的日期进行上述示例的最终结果是将正确的文件复制到tempfiles2文件夹:
ASC05012019R.DBF
ASC05012019H.DBF
ASC05012019F.DBF
ROS12012019R.DBF
ROS12012019H.DBF
ROS12012019F.DBF
ROK20012019R.DBF
ROK20012019H.DBF
ROK20012019F.DBF
试试这个
#Define start and end date to select from files
start_range <- as.Date("05012019", format = "%d%m%Y")
end_range <- as.Date("22012019", format = "%d%m%Y")
#Get full path of file names to copy
file_path <- list.files(current_folder, ".DBF", full.names = TRUE)
#Get date from the filenames to compare
list_date <- as.Date(substr(list.files(current_folder, ".DBF"),
4,11), format= "%d%m%Y")
#Select the files which lie in the range of dates
files_to_copy <- file_path[list_date %in% seq(start_range, end_range, by = "1 day")]
#Copy the files
file.copy(files_to_copy, new_folder)
以下是一种方法:
制作一些要使用的文件
文件[1]正确
>[15]真的
在正则表达式模式中使用集合来获取具有正确结尾的文件
文件[1]ASC05012019F.DBF ASC05012019H.DBF ASC05012019R.DBF
>[4]BAL250119F.DBF BAL2501219H.DBF BAL2501219R.DBF
>[7]ROK20012019F.DBF ROK20012019H.DBF ROK20012019R.DBF
>[10]Ros12019F.DBF Ros12019H.DBF Ros12019R.DBF
提取并解析日期
文件日期[1]2019-01-05 2019-01-05 2019-01-05 2019-01-05 2019-01-25 2019-01-25
> [6] 2019-01-25 2019-01-20 2019-01-20 2019-01-20 2019-01-12
> [11] 2019-01-12 2019-01-12
基于日期的子集
通缉文件为.Date'2019-01-05'&文件日期这太棒了。但是,对于复制的每个文件,它都会在控制台中输出TRUE。有什么办法可以避免吗?@Matt是的,你可以用不可见的、不可见的file.copyfiles\u to\u copy,new\u folderI刚刚看到了这个,所以现在就试试看。
file.copy(file.path(current_folder,list_of_files), new_folder)
ASC05012019R.DBF
ASC05012019H.DBF
ASC05012019F.DBF
ROS12012019R.DBF
ROS12012019H.DBF
ROS12012019F.DBF
ROK20012019R.DBF
ROK20012019H.DBF
ROK20012019F.DBF
#Define start and end date to select from files
start_range <- as.Date("05012019", format = "%d%m%Y")
end_range <- as.Date("22012019", format = "%d%m%Y")
#Get full path of file names to copy
file_path <- list.files(current_folder, ".DBF", full.names = TRUE)
#Get date from the filenames to compare
list_date <- as.Date(substr(list.files(current_folder, ".DBF"),
4,11), format= "%d%m%Y")
#Select the files which lie in the range of dates
files_to_copy <- file_path[list_date %in% seq(start_range, end_range, by = "1 day")]
#Copy the files
file.copy(files_to_copy, new_folder)