在R中,如何从CSV文件名中删除一些不需要的字符并提取日期?

时间:2016-02-22 06:51:27

标签: r dataframe

我有一个包含大约2000个CSV的文件夹,文件名中包含字符“[ ]” - 例如:[Residential]20151001_0000_1.csv

我想:

  • 从名称中删除“[]”,以便我们将文件名设置为:

    Residential_20151001_0000_1.csv

    并将新文件放在新文件夹中。

  • 在每个文件中跳过第一行后,在一个数据框(不带标题)中读取该新文件夹中的所有文件。

  • 同样在新的向量中将 20151001 作为日期(例如2015-10-01)提取为列表,以便新向量为:

    档案名称日期

    Residential_20151001_0000_1.csv 2015-10-01

2 个答案:

答案 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)

按顺序: