2016-03-08 6 views
0

Mes données: J'ai des données longitudinales pour quelques centaines de sujets et le programme crache les fichiers de données dans le format de week.subjectID.csv. Par exemple, 1.100.csv est le fichier de la semaine 1 du sujet 100.Importer plusieurs fichiers .csv dans R basé sur une liste

Mon problème: En utilisant le post à la fin, j'ai compris comment lire plusieurs fichiers et les combiner (code ci-dessous).

library(plyr) 
#Create list of all weekly files for subject ID 100 
files = list.files(pattern="*.100.csv") 
#List of data frames 
subject = lapply(files, read.delim) 
#Throw them altogether 
exporty = ldply(subject, data.frame) 
#Export new file 
write.csv(exporty, "100") 

Cependant, ce processus est assez lent lorsque vous devez répéter cette commande pour tous mes sujets. Y at-il un moyen de créer une liste de mes sujets et, un sujet à la fois, lire dans leurs fichiers, les combiner, exporter leur ensemble de données combinées, puis passer au sujet suivant?

ressources: Importing multiple .csv files into R

+0

Notez que l'argument '' pattern' à ls' est une expression générique _not_, mais une expression rationnelle. Ce que vous voulez, c'est 'ls (pattern =" \\. 100 \\. Csv $ "'. –

Répondre

2

oui vous pouvez mettre votre tout le code dans un autre lapply():

library(plyr) 

subjects <- c("100", "200", "300") 
lapply(subjects, FUN=function(eachsubject){ 
    files = list.files(pattern=paste0("*.", eachsubject, ".csv")) 
    subject = lapply(files, read.delim) 
    exporty = ldply(subject, data.frame) 
    write.csv(exporty, eachsubject) 
    }) 
+0

Merci beaucoup! Je pensais que ce serait lapply, mais je ne pouvais pas tout mettre ensemble ... surtout avec le nommage des fichiers. – erebusgw