我有一个包含大约2000个CSV的文件夹,文件名中包含字符“[ ]
” - 例如:[Residential]20151001_0000_1.csv
我想:
从名称中删除“[]”,以便我们将文件名设置为:
Residential_20151001_0000_1.csv
并将新文件放在新文件夹中。
在每个文件中跳过第一行后,在一个数据框(不带标题)中读取该新文件夹中的所有文件。
同样在新的向量中将 20151001 作为日期(例如2015-10-01)提取为列表,以便新向量为:
档案名称日期
Residential_20151001_0000_1.csv 2015-10-01
答案 0 :(得分:2)
这段代码将回答您的第一个问题,尽管逻辑上有一点变化。
首先,让我们通过将其复制到另一个文件夹来创建包含csv
的所有[]
的备份。例如 - 如果您的csv
位于目录"/Users/xxxx/Desktop/Sub"
中,我们会将其复制到Backup
文件夹中。
因此,
library(stringr)
library(tools)
setwd("/Users/xxxx/Desktop/Sub")
dir.create("Backup")
files<-data.frame(file=list.files(path=".", pattern = "*.csv"))
for (f in files)
file.copy(from= file.path("/Users/xxxx/Desktop/Sub", files$file), to= "/Users/xxxx/Desktop/Sub/Backup")
现在已将所有csv文件复制到文件夹备份。
现在可以通过删除&#34; []&#34;来重命名原始工作目录中的文件。 我创建了一个包含旧名称和新名称的数据框,以便让您更轻松地完成更长的路线。
Name<-file_path_sans_ext(files$file)
files<-cbind(files, Name)
files$Name<-gsub("\\[", "",files$Name)
files$Name<-gsub("\\]", "_",files$Name)
files$Name<-paste(files$Name,".csv",sep="")
此数据框如下所示:
files
file Name
1 [Residential]20150928_0000_4.csv Residential_20150928_0000_4.csv
2 [Residential]20151001_0000_1.csv Residential_20151001_0000_1.csv
3 [Residential]20151101_0000_3.csv Residential_20151101_0000_3.csv
4 [Residential]20151121_0000_2.csv Residential_20151121_0000_2.csv
5 [Residential]20151231_0000_5.csv Residential_20151231_0000_5.csv
现在让我们重命名文件以删除&#34; []&#34;。这里的想法是用Name:
替换文件for ( f in files$file)
file.rename(from=file.path("/Users/xxxx/Desktop/Sub", files$file),
to=file.path("/Users/xxxx/Desktop/Sub",files$Name))
您现在已重命名了自己的文件。如果您运行:list.files(path=".", pattern = "*.csv")
您将获得新文件:
"Residential_20150928_0000_4.csv"
"Residential_20151001_0000_1.csv"
"Residential_20151101_0000_3.csv"
"Residential_20151121_0000_2.csv"
"Residential_20151231_0000_5.csv"
试试吧!
答案 1 :(得分:1)
按顺序:
r replace part of string
后,我发现:R - how to replace parts of variable strings within data frame。这可以帮助您解决此问题。read.csv
的文档。在那里你会找到skip
参数。strftime
/ strptime
个功能。或者,请查看lubridate
。