2012-09-18 7 views
0

J'ai une série de fichiers .csv qui ont été créés en tant que sortie d'une boucle for (en fonction de la variable STOCKNAME changer) R. Chaque fichier est nommé csvXXXX.csvXXXX est le nom utilisé dans la boucle. Chaque fichier csv a trois colonnes mais une taille différente pour les lignes. Je veux créer un seul fichier csv qui inclura toutes les différentes colonnes dedans.Comment fusionner plusieurs fichiers CSV en un seul fichier CSV dans R en ajoutant des colonnes?

if csv files 1 is like C1 C2 
and 
csv file 2 is C3 C4 

Je veux que ma sortie finale soit un fichier csv comme C1 C2 C3 C4.

Merci à l'avance

+0

Voulez-vous que les champs manquants soient affichés comme NA? –

Répondre

0

Si les fichiers ne sont pas trop grand, à savoir facilement dans la mémoire, vous pouvez utiliser une combinaison de cbind et lapply pour créer un grand data.frame qui peut être enregistré à l'aide write.csv. Dans ce ressemble à quelque chose comme:

fnames = list.files() 
big_list = lapply(fnames, read.csv) 
big_data = do.call("cbind", big_list) 
write.csv(big_data, file = "big.csv") 

pour résoudre le problème avec la quantité différente de lignes, vous ajoutez NA de jusqu'à ce que les longueurs de ligne sont égaux. Vous devez cela avant de fusionner les fichiers individuels en un seul grand objet. Trouver l'objet le plus grand, c'est-à-dire la plupart des rangées, est fait en utilisant quelque chose comme:

max_nrow = max(sapply(big_list, nrow)) 
Questions connexes