Я назвал каждый файл для каждого дня между 2012 и 2016 годами следующим образом: 2012-01-01.csv; 2012-01-02.csv ... до 2016-12-31.csv. Но для 2017 и 2018 годов файлы называются так: 20170101.csv; 20170102.csv ... Может кто-нибудь помочь мне включить дефисы во вторые файлы, чтобы они имели то же имя, что и первые?
Спасибо!
Может быть, вы можете попробовать следующий код с list.files + file.rename
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)
Изменить: используйте это вместо
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]))
В вашем вопросе много недостающей информации, но вы должен иметь возможность корректировать приведенный ниже код в соответствии с вашими потребностями. Более того, вам нужно отредактировать строку read.csv, если у вас есть заголовки и настроить другие параметры
Примечание: Это перезапишет все ваши таблицы, поэтому убедитесь, что данные импортированы правильно с помощью read.csv в lapply перед запуском write.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]))