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 iriaEu 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