2013-10-03 2 views
0

У меня есть папка с сотнями CSV-файлов, которые я хотел бы объединить в единый фрейм данных.Слияние файлов CSV с несогласованными заголовками в R

Я использую этот код, который работает относительно хорошо, но только для файлов с соответствующими заголовками.

df <- do.call(rbind, lapply(filenames , read.csv)) 

Вопрос о двух частях.

1.) Я хотел бы добавить этот код do.call включить дополнительный столбец, который включает в себя имя файла .csv для каждой строки данных

2.) Я хотел бы также, чтобы иметь возможность объединить .csv с несогласованными заголовками. Каждый файл имеет четыре столбца (с разными именами), но тип данных совпадает. Поэтому я хочу заставить файлы связываться вместе независимо от заголовка столбца.

Это сообщение было полезным, но не для объединения файлов с не-mathcing заголовки:

Merge multiple CSV files and remove duplicates in R

Я также использовал этот код; опять же только для файлов с соответствующими заголовками:

for (file in filenames){ 
    # if the merged dataset doesn't exist, create it 
    if (!exists("dataset")){ 
    dataset <- read.csv(file, header=TRUE, sep="\t") 
    } 
    # if the merged dataset does exist, append to it 
    if (exists("dataset")){ 
    temp_dataset <-read.csv(file, header=TRUE, sep="\t") 
    dataset<-rbind(dataset, temp_dataset) 
    rm(temp_dataset) 
    } 
    } 
+0

Что очень неясно, вот что вы хотели бы случиться с несоответствующими столбцами? Вы удаляете их, сохраняете ли вы их всех? Я последний, что происходит с файлами, у которых нет новых столбцов. –

+0

@RicardoSaporta. Я немного изменил вопрос. Каждый файл имеет четыре столбца (с разными именами), но тип данных совпадает. Поэтому я хочу заставить файлы связываться вместе независимо от заголовка столбца. – Flammulation

+0

- это столбцы всегда в одном порядке, от одного файла к другому? Если да, просто прочитайте их с помощью 'header = FALSE', а затем rbind их –

ответ

0

Что о:

df <- do.call(rbind, lapply(filenames , 
         function(x) data.frame(filname = x, read.csv(x))) 
+0

Это отлично подходит для добавления столбца с именами файлов. Любая идея о включении возможности объединения файлов с несогласованными именами столбцов? – Flammulation

+1

Вам необходимо либо перезаписать существующие имена, либо предоставить правило для сопоставления имен и удаления несоответствий. На данный момент вопрос слишком расплывчатый. Предоставьте тестовый пример, отредактировав свой вопрос. –

+1

Я включил код для добавления имени файла из @DWin с добавлением 'header = FALSE' из @RicardoSaporta и закончил с этим кодом:' dataset <- ldply (filenames, function (x) data.frame (filname = x , read.csv (x, header = FALSE))) ' – Flammulation

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

  • Нет связанных вопросов^_^