2014-07-18 20 views
14

Ho una cartella contenente 332 file csv. Il nome dei file è il seguente 001.csv, 002.csv, 003.csv, ............, 330.csv, 331.csv, 332.csv. Tutti i file hanno lo stesso numero di variabili e lo stesso formato.Lettura di più file csv da una cartella in un singolo dataframe in R

Ho bisogno di leggere tutti i file in un dataframe. Ho letto tutti e poi ho usato rbind, ma questo è troppo macchinoso.

Ho bisogno di aiuto.

+1

Anche se il duplicato vi darà una buona idea da che cosa fare, questo problema esatto è stato pubblicato prima in altri questioni [come questo] (http://stackoverflow.com/questions/23951541/importing- multiple-CSV-file-in-r-by-nomi-di-file/23952165 # 23952165). – Jaap

risposta

27

Prova lapply e do.call

file_names <- dir() #where you have your files 

your_data_frame <- do.call(rbind,lapply(file_names,read.csv)) 
0

Ecco una possibile soluzione. Potrebbe probabilmente anche essere fatto con una funzione di applicazione.

path <- "path_to_files" 
files <- c(paste("00",2:9,".csv",sep=""), 
      paste("0",10:99,".csv",sep=""), 
      paste(100:332,".csv",sep="") 
      ) 
#Read first file to create variables in a data frame 
data <- read.csv(paste(path,"001.csv",sep="/")) 

#Read remaining files and rbind them to dataset 
for (f in files) { 
    data <- rbind(data,read.csv(paste(path, files, sep="/"))) 
} 
+0

Grazie a tutti per il vostro aiuto immediato. I seguenti comandi con header = TRUE hanno funzionato per me. file_names <- dir() #dove hai i tuoi file your_data_frame <- do.call (rbind, lapply (file_names, read.csv, header = TRUE)) – Madhumita

9

Solution con data.table, risposta è preso da un altro post in SO che a volte ho usato di nuovo.

library(data.table) 
files <- list.files(path = "/etc/dump",pattern = ".csv") 
temp <- lapply(files, fread, sep=",") 
data <- rbindlist(temp) 
+0

Questo è abbastanza bello. – AidanGawronski

Problemi correlati