Чтение нескольких файлов и вычисление среднего значения на основе пользовательского ввода

Я пытаюсь написать функцию в 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

Любая идея, как сформулировать это будет высоко ценится ...

ура

Ответы на вопрос(8)

Ваш ответ на вопрос