Чтение нескольких файлов и вычисление среднего значения на основе пользовательского ввода
Я пытаюсь написать функцию в R, которая принимает 3 входа:
каталогзагрязнительЯ быУ меня есть каталог на моем компьютере, полный файлов CSV, то есть более 300. Что будет делать эта функция, показано в следующем прототипе:
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)
}
Пример вывода этой функции показан здесь:
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
Я могу прочитать все это за один раз:
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)
Моя проблема:
Пользователь вводит идентификатор как атомарный, так и в диапазоне, например предположим, что пользователь вводит 1, но имя файла - 001.csv или что, если пользователь вводит диапазон 1:10, тогда имена файлов - 001.csv ... 010.csvСтолбец вводится пользователем, то есть «сульфат» или «нитрат», который он / она заинтересован в получении среднего значения ... В этих столбцах много пропущенных значений (которые мне нужно опустить в столбце перед вычислением среднего значения.Все данные из всех файлов выглядят так:
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
Любая идея, как сформулировать это будет высоко ценится ...
ура