Lendo vários arquivos e calculando a média com base na entrada do usuário

Eu estou tentando escrever uma função em R que leva 3 entradas:

DiretóriopoluenteEu iria

Eu tenho um diretório no meu computador cheio de arquivos do CSV, ou seja, mais de 300. O que essa função faria é mostrado no protótipo abaixo:

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)
        }

Um exemplo de saída desta função é mostrado aqui:

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

Eu posso ler a coisa toda de uma só vez:

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)

Meu problema é:

O usuário digita o ID atômico ou em um intervalo, por exemplo suponha que o usuário insira 1, mas o nome do arquivo seja 001.csv ou, e se o usuário digitar um intervalo de 1:10, os nomes dos arquivos serão 001.csv ... 010.csvA coluna é determinada pelo usuário, ou seja, "sulfato" ou "nitrato", do qual ele está interessado em obter a média de ... Existem muitos valores ausentes nessas colunas (que eu preciso omitir da coluna antes de calcular a média.

Os dados completos de todos os arquivos são assim:

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

Qualquer idéia de como formular isso seria muito apreciada ...

Felicidades

questionAnswers(8)

yourAnswerToTheQuestion