Je fais une analyse relativement simple que j'ai mise dans une fonction, sur tous les fichiers d'un dossier particulier. Je me demandais si quelqu'un avait des conseils pour m'aider à automatiser le processus sur un certain nombre de dossiers différents.
- Tout d'abord, je me demandais s'il y avait un moyen de lire tous les fichiers d'un dossier particulier directement dans R. Je pense que la commande suivante listera tous les fichiers:
files <- (Sys.glob("*.csv"))
... que j'ai trouvé en utilisant R pour lister tous les fichiers avec une extension spécifiée
Et puis le code suivant lit tous ces fichiers dans R.
listOfFiles <- lapply(files, function(x) read.table(x, header = FALSE))
… De Manipulation de plusieurs fichiers dans R
Mais les fichiers semblent être lus comme une liste continue et non comme des fichiers individuels… comment puis-je changer le script pour ouvrir tous les fichiers csv dans un dossier particulier en tant que dataframes individuels?
Deuxièmement, en supposant que je puisse lire tous les fichiers séparément, comment puis-je compléter une fonction sur toutes ces dataframes en une seule fois. Par exemple, j'ai créé quatre petits dataframes pour illustrer ce que je veux:
Df.1 <- data.frame(A = c(5,4,7,6,8,4),B = (c(1,5,2,4,9,1))) Df.2 <- data.frame(A = c(1:6),B = (c(2,3,4,5,1,1))) Df.3 <- data.frame(A = c(4,6,8,0,1,11),B = (c(7,6,5,9,1,15))) Df.4 <- data.frame(A = c(4,2,6,8,1,0),B = (c(3,1,9,11,2,16)))
J'ai également créé un exemple de fonction:
Summary<-function(dfile){
SumA<-sum(dfile$A)
MinA<-min(dfile$A)
MeanA<-mean(dfile$A)
MedianA<-median(dfile$A)
MaxA<-max(dfile$A)
sumB<-sum(dfile$B)
MinB<-min(dfile$B)
MeanB<-mean(dfile$B)
MedianB<-median(dfile$B)
MaxB<-max(dfile$B)
Sum<-c(sumA,sumB)
Min<-c(MinA,MinB)
Mean<-c(MeanA,MeanB)
Median<-c(MedianA,MedianB)
Max<-c(MaxA,MaxB)
rm(sumA,sumB,MinA,MinB,MeanA,MeanB,MedianA,MedianB,MaxA,MaxB)
Label<-c("A","B")
dfile_summary<-data.frame(Label,Sum,Min,Mean,Median,Max)
return(dfile_summary)}
J'utiliserais habituellement la commande suivante pour appliquer la fonction à chaque trame de données individuelle.
Df1.summary <-Summary (dfile)
Existe-t-il un moyen au lieu d'appliquer la fonction à toutes les dataframes, et d'utiliser les titres des dataframes dans les tableaux récapitulatifs (ie Df1.summary).
Merci beaucoup,
Katie
plyr::llply(ouldply) au lieu delapplyconserver les noms partout, et définir ma propre fonction de résumé, par exempleplyr::each(min, max, mean, sd, median)