Ich versuche, eine Funktion zu erstellen, die mehrere Datentabellen in .csv-Dateien importieren/lesen kann, und dann Statistiken für die ausgewählten Dateien berechnen. Jede der 332 CSV-Datei enthält eine Tabelle mit den gleichen Spaltennamen: Datum, Schadstoff und ID. Es gibt viele fehlende Werte.R3.4.1 Lesen von Daten aus mehreren CSV-Dateien
Dies ist die Funktion, die ich bisher geschrieben hätte, den Mittelwert des Wertes für einen Schadstoff zu berechnen:
pollutantmean <- function(directory, pollutant, id = 1:332) {
library(dplyr)
setwd(directory)
good<-c()
for (i in (id)){
task1<-read.csv(sprintf("%03d.csv",i))
}
p<-select(task1, pollutant)
good<-c(good,complete.cases(p))
mean(p[good,])
}
Das Problem, das ich habe ist, dass jedes Mal durch die Schleife wird eine neue Datei geht gelesen und die Bereits gelesene Daten werden durch die Daten der neuen Datei ersetzt. Also ich am Ende mit einer Funktion funktioniert einwandfrei mit 1 einzigen Datei, aber nicht, wenn ich mehrere Dateien z. Wenn ich nach id = 10: 20 frage, habe ich den Mittelwert, der nur für Datei 20 berechnet wird.
Wie kann ich den Code ändern, damit ich mehrere Dateien auswählen kann?
Vielen Dank!
Sie definieren 'good' als' c() 'am Anfang jeder Schleifeniteration neu. Um zu bekommen, was Sie wollen, sollten Sie 'gut '* außerhalb * der Schleife definieren. (Und während wir dabei sind, laden Sie Ihr Paket/setzen Sie Ihr Arbeitsverzeichnis auch außerhalb der Schleife.) –