Lesen mehrerer Dateien und Berechnen des Mittelwerts basierend auf Benutzereingaben
Ich versuche, eine Funktion in R zu schreiben, die 3 Eingaben annimmt:
VerzeichnisSchadstoffIch würdeIch habe ein Verzeichnis auf meinem Computer mit CSV-Dateien, d. H. Über 300. Was diese Funktion bewirken würde, wird im folgenden Prototyp gezeigt:
pollutantmean <- function(directory, pollutant, id = 1:332) {
## 'directory' is a character vector of length 1 indicating
## the location of the CSV files
## 'pollutant' is a character vector of length 1 indicating
## the name of the pollutant for which we will calculate the
## mean; either "sulfate" or "nitrate".
## 'id' is an integer vector indicating the monitor ID numbers
## to be used
## Return the mean of the pollutant across all monitors list
## in the 'id' vector (ignoring NA values)
}
Eine Beispielausgabe dieser Funktion ist hier dargestellt:
source("pollutantmean.R")
pollutantmean("specdata", "sulfate", 1:10)
## [1] 4.064
pollutantmean("specdata", "nitrate", 70:72)
## [1] 1.706
pollutantmean("specdata", "nitrate", 23)
## [1] 1.281
Ich kann das Ganze auf einmal nachlesen:
path = "C:/Users/Sean/Documents/R Projects/Data/specdata"
fileList = list.files(path=path,pattern="\\.csv$",full.names=T)
all.files.data = lapply(fileList,read.csv,header=TRUE)
DATA = do.call("rbind",all.files.data)
Mein Problem sind:
Der Benutzer gibt die ID entweder atomar oder in einem Bereich ein, z. Angenommen, der Benutzer gibt 1 ein, aber der Dateiname lautet 001.csv. Wenn der Benutzer einen Bereich von 1:10 eingibt, lauten die Dateinamen 001.csv ... 010.csvDie Spalte wird vom Benutzer eingegeben, d. H. "Sulfat" oder "Nitrat", für das er / sie den Mittelwert abrufen möchte. In diesen Spalten fehlen viele Werte (die ich aus der Spalte auslassen muss, bevor der Mittelwert berechnet wird.Die gesamten Daten aus allen Dateien sehen folgendermaßen aus:
summary(DATA)
Date sulfate nitrate ID
2004-01-01: 250 Min. : 0.0 Min. : 0.0 Min. : 1.0
2004-01-02: 250 1st Qu.: 1.3 1st Qu.: 0.4 1st Qu.: 79.0
2004-01-03: 250 Median : 2.4 Median : 0.8 Median :168.0
2004-01-04: 250 Mean : 3.2 Mean : 1.7 Mean :164.5
2004-01-05: 250 3rd Qu.: 4.0 3rd Qu.: 2.0 3rd Qu.:247.0
2004-01-06: 250 Max. :35.9 Max. :53.9 Max. :332.0
(Other) :770587 NA's :653304 NA's :657738
Jede Idee, wie man das formuliert, wäre sehr dankbar ...
Prost