【发布时间】:2020-08-05 09:39:39
【问题描述】:
我已将 2012 年至 2016 年间每一天的每个文件命名为:2012-01-01.csv; 2012-01-02.csv... 直到 2016-12-31.csv。但对于 2017 年和 2018 年,文件的名称如下:20170101.csv; 20170102.csv...有人可以帮我在第二个文件中包含连字符,以便它们与第一个文件具有相同的名称吗?
谢谢!
【问题讨论】:
我已将 2012 年至 2016 年间每一天的每个文件命名为:2012-01-01.csv; 2012-01-02.csv... 直到 2016-12-31.csv。但对于 2017 年和 2018 年,文件的名称如下:20170101.csv; 20170102.csv...有人可以帮我在第二个文件中包含连字符,以便它们与第一个文件具有相同的名称吗?
谢谢!
【问题讨论】:
编辑:改用这个
setwd("C:\\Users\\...Path to your data")
DataFileNames <- list.files(pattern="\\.csv$")
sub("(\\d{4})(\\d{2})(\\d{2})(.*)","\\1-\\2-\\3\\4",DataFileNames)
file.rename(DataFileNames,NewDataFileNames)
旧答案:
您的问题缺少很多信息,但您应该 能够调整下面的代码以满足您的需求。大多数情况下,您将 如果您有标题并调整其他标题,则需要编辑 read.csv 行 参数。
注意:这将覆盖您的所有表格,因此请确保在您之前使用
lapply中的read.csv正确导入数据 运行write.csv(最后一行)setwd("C:\\Users\\...Path to your data") DataFileNames <- list.files(pattern="\\.csv$") Datafiles <- lapply(DataFileNames, read.csv, header=FALSE) DataFileNames <- sub("(\\d{4})(\\d{2})(\\d{2}).csv","\\1-\\2-\\3",DataFileNames) lapply(1:length(Datafiles), function(x) write.csv(Datafiles[x], DataFileNames[x]))
【讨论】:
list.files(pattern="\\.csv$") 只是在寻找扩展名为 .csv 的文件,如果您愿意,可以将其更改为 .exec,就像我在回答中所说的那样。你甚至可以使用list.files() 来获取文件夹中的所有文件。我已经编辑了gsub 行,以确保它使用与文件已有的扩展名相同的扩展名。
.csv 扩展名。如果您的文件夹中没有其他文件,您可以使用与上述相同的代码来解决此问题。通过获取文件夹DataFileNames <- list.files() 中的所有文件,然后使用NewDataFileNames <- sub("(.*)","\\1.csv",DataFileNames) 添加csv 扩展名,最后使用file.rename(DataFileNames,NewDataFileNames) 重命名它们。很抱歉这个错误。
也许你可以试试下面的代码list.files + file.rename
old <- list.files(pattern = ".*.csv")
new <- paste0(as.Date(gsub(".csv","",old,fixed = TRUE),format = c("%Y-%m-%d","%Y%m%d")),".csv")
file.rename(old,new)
【讨论】: