Ich mache eine relativ einfache Analyse, die ich in eine Funktion für alle Dateien in einem bestimmten Ordner eingefügt habe. Ich habe mich gefragt, ob jemand Tipps hat, mit denen ich den Prozess in verschiedenen Ordnern automatisieren kann.
- Zunächst habe ich mich gefragt, ob es eine Möglichkeit gibt, alle Dateien in einem bestimmten Ordner direkt in R zu lesen. Ich glaube, der folgende Befehl listet alle Dateien auf:
files <- (Sys.glob("*.csv"))
... die ich unter Verwenden von R gefunden habe, um alle Dateien mit einer bestimmten Erweiterung aufzulisten
Und dann liest der folgende Code alle diese Dateien in R.
listOfFiles <- lapply(files, function(x) read.table(x, header = FALSE))
… Vom Bearbeiten mehrerer Dateien in R.
Die Dateien scheinen jedoch als eine fortlaufende Liste und nicht als einzelne Dateien eingelesen zu werden. Wie kann ich das Skript so ändern, dass alle CSV-Dateien in einem bestimmten Ordner als einzelne Datenrahmen geöffnet werden?
Zweitens: Unter der Annahme, dass ich alle Dateien separat einlesen kann, wie führe ich eine Funktion für alle diese Datenrahmen auf einmal aus. Zum Beispiel habe ich vier kleine Datenrahmen erstellt, damit ich veranschaulichen kann, was ich will:
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)))
Ich habe mir auch eine Beispielfunktion ausgedacht:
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)}
Normalerweise würde ich den folgenden Befehl verwenden, um die Funktion auf jeden einzelnen Datenrahmen anzuwenden.
Df1.summary <-Summary (dfile)
Gibt es eine Möglichkeit, die Funktion nicht auf alle Datenrahmen anzuwenden und die Titel der Datenrahmen in den Übersichtstabellen zu verwenden (dh Df1.summary)?
Danke vielmals,
Katie
plyr::llply
(oderldply
) anstattlapply
die Namen durchgehend beizubehalten und meine eigene Zusammenfassungsfunktion zu definieren, z. B.plyr::each(min, max, mean, sd, median)