Переименовать файлы дат с помощью R - PullRequest
1 голос
/ 22 апреля 2020

Я назвал каждый файл для каждого дня между 2012 и 2016 годами следующим образом: 2012-01-01.csv; 2012-01-02.csv ... до 2016-12-31.csv. Но для 2017 и 2018 годов файлы называются так: 20170101.csv; 20170102.csv ... Может кто-нибудь помочь мне включить дефисы во вторые файлы, чтобы они имели то же имя, что и первые?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 22 апреля 2020

Может быть, вы можете попробовать следующий код с 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)
1 голос
/ 22 апреля 2020

Изменить: используйте это вместо

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, если у вас есть заголовки и настроить другие параметры

Примечание: Это перезапишет все ваши таблицы, поэтому убедитесь, что данные импортированы правильно с помощью read.csv в lapply перед запуском 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]))
...