Ich persönlich denke, der einfachste Weg, dies zu tun mit dem plyr Paket ist:
library(plyr)
myFiles <- c("male.csv", "female.csv")
dat <- ldply(myFiles, read.csv)
dat <- dat[complete.cases(dat), ]
mean(dat$MEAN)
Die Art und Weise dies funktioniert, ist, dass Sie zunächst einen Vektor von Dateinamen erstellen. Dann führt die Funktion ldply() die Funktion read.csv() für den Vektor von Dateinamen aus und konvertiert die Ausgabe automatisch in einen data.frame. Dann machen Sie die complete.cases() und mean() wie gewohnt.
Edit:
Aber wenn Sie den Mittelwert jeder Datei soll hier dann ist eine Möglichkeit, es zu tun:
# create a vector of files
myFiles <- c("male.csv", "female.csv")
# create a function that properly handles ONLY ONE ELEMENT
readAndCalc <- function(x){ # pass in the filename
tmp <- read.csv(x) # read the single file
tmp <- tmp[complete.cases(tmp), ] # complete.cases()
mean(tmp$MEAN) # mean
}
x <- "male.csv"
readAndCalc(x) # test with ONE file
sapply(myFiles, readAndCalc) # run with all your files
Die Art und Weise dies funktioniert, ist, dass Sie zunächst einen Vektor von Dateinamen erstellen, einfach wie früher. Dann erstellen Sie eine Funktion, die jeweils nur EINE Datei verarbeitet. Dann können Sie testen, ob die Funktion mit der gerade erstellten Funktion readAndCalc funktioniert. Schließlich tun Sie es für alle Ihre Dateien mit der Funktion sapply(). Ich hoffe, das hilft.
Wo schließt sich '}' in der for-Schleife? – WillardSolutions
'dat [1]' ist das erste Element von 'dat'. 'dat1' ist ein anderes Objekt! – jogo
Die beste Möglichkeit, mehrere Dateien zu lesen, ist, sie in eine Liste zu schreiben. Siehe den folgenden Link für ein Beispiel: http://stackoverflow.com/questions/19501040/using-read-csv-in-a-for-loop – lmo