2013-10-04 2 views
0

У меня есть папка, которая выглядит следующим образомОбъединить .csv с таким же именем в папке

> list.files() 
[1] "2013-09-13(1).csv" "2013-09-13.csv" "2013-09-14.csv" "2013-09-15.csv" 
[5] "2013-09-16.csv" "2013-09-17.csv" "2013-09-18.csv" "2013-09-19.csv" 
[9] "2013-09-20.csv" "2013-09-21.csv" "2013-09-22.csv" "2013-09-23.csv" 
[13] "2013-09-24.csv" "2013-09-25.csv" "2013-09-26(1).csv" "2013-09-26(2).csv" 
[17] "2013-09-26.csv" "2013-09-27.csv" "2013-09-28.csv" "2013-09-29.csv" 
[21] "2013-09-30.csv" 

Как можно видеть, есть файлы с одинаковыми именами, такими как «2013-09-13 (1) .csv "&" 2013-09-13.csv ". То, что я хочу сделать, это создать некоторую форму петли, которая может обнаружить такие проблемы и rbind файлы

2013-09-03 <- rbind(2013-09-13.csv, 2013-09-13(1).csv) 
write.csv(2013-09-03, file="2013-09-03.csv", row.names=FALSE) 
2013-09-26 <- rbind(2013-09-26.csv, 2013-09-26(1).csv, 2013-09-26(2).csv) 
write.csv(2013-09-26, file="2013-09-26.csv", row.names=FALSE) 

Таким образом, в конце концов, я могу видеть это:

list.files() 
[1] "2013-09-13.csv" "2013-09-14.csv" "2013-09-15.csv" "2013-09-16.csv" 
[5] "2013-09-17.csv" "2013-09-18.csv" "2013-09-19.csv" "2013-09-20.csv" 
[9] "2013-09-21.csv" "2013-09-22.csv" "2013-09-23.csv" "2013-09-24.csv" 
[13] "2013-09-25.csv" "2013-09-26.csv" "2013-09-27.csv" "2013-09-28.csv" 
[17] "2013-09-29.csv" "2013-09-30.csv" 

Кто-нибудь знает, как я могу сделай это?

ответ

0

Суть в этом направлении должна работать, не запускать его самостоятельно.

library(data.table) 
patternstomatch <- gsub(list.files(), pattern = ".csv", replacement = "") 

for (i in patternstomatch) 
{ 
    filestorbind <- list.files(pattern = i) 
    if(length(filestorbind) > 1) 
    { 
    rbindeddataset <- rbindlist(lapply(filestorbind, read.csv)) 
    write.csv(rbindeddataset , file = paste(i,".csv", sep = "")) 
    } 
} 

patternstomatch будет содержать "2013-09-13 (1)", "2013-09-13", "2013-09-14" и т.д. цикл будет выглядеть для каждого из этих строк в имена файлов. Если найдено несколько файлов, соответствующих шаблону, они будут читать их все, rbind и записать их как «.csv». .

Использование GSUB подхода на первой линии, вы можете найти файлы, которые имеют «(» в имени файла и использовать file.remove удалить эти файлы

+0

Спасибо, Ваше решение работает с этим изменением:) rbindeddataset <- rbindlist (lapply (filestorbind, read.csv)) –

+0

Пожалуйста, отредактируйте мой ответ соответственно, так как вы его заметили :). Я новичок в SO, но я думаю, что редактирование также дает вам указания. – TheComeOnMan

Смежные вопросы