[R-br] Leitura de arquivos
Vinícius Lionel Mateus
vinynegrelli em gmail.com
Segunda Junho 15 08:49:37 BRT 2015
Olá Romero,
Precisei fazer algo similar para uma avaliação de um curso, que me
inscrevi no Coursera.
Estou rodando o programa para 322 arquivos.
Dá uma olhada:
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)
## NOTE: Do not round the result!
files_full <- list.files("specdata", full.names = TRUE)
files_full
# summary(files_full)
tmp <- vector(mode = "list", length = length(files_full))
for (i in seq_along(files_full)) {
tmp[[i]] <- read.csv(files_full[[i]])
}
output <- do.call(rbind, tmp)
# str(output)
output_subset <- subset(output, output[, "ID"] %in% id) # subset by
any value
if (pollutant == "sulfate") {
mean(output_subset$sulfate, na.rm = TRUE)
} else if (pollutant == "nitrate") {
mean(output_subset$nitrate, na.rm = TRUE)
} else {
print("pollutant can only be nitrate or sulfate!")
}
}
Acho que pode servir a ti!
Abs,
Vinícius
On 06/13/2015 04:56 PM, David Feitosa wrote:
> João, não sei o quão esse procedimento irá escalar,
> mas considere usar um SGBD, como Postgresql/MySQL ou outro.
>
> Há um pacote sqldf que permite trabalhar com consultas à bases de dados
> e tratar o resultado como um dataframe.
>
>
> Atenciosamente,
>
> David F.
>
> Em 8 de junho de 2015 11:19, joão Rodrigo Castro
> <joaorodrigo2005 em gmail.com <mailto:joaorodrigo2005 em gmail.com>> escreveu:
>
> Entendi Augusto, vou implementar! Muito Obrigado
>
> Em 8 de junho de 2015 11:14, Augusto Ribas <ribas.aca em gmail.com
> <mailto:ribas.aca em gmail.com>> escreveu:
>
> Algo assim:
>
> #Ve o nome dos arquivos da pasta, use getwd e setwd se
> precisar mudar de pasta
> arquivos<-list.files()
>
> #pegue os arquivos que são .dat
> indices<-grep(".dat",arquivos)
> arquivos[indices]
>
> #separe um vetor com eles, podemos reutilizar o vetor aqui
> arquivos<-arquivos[indices]
>
> #Ai você usa alguma estrutura de repetição, um loop por
> exemplo, para processar um por um
> for(i in 1:length(arquivos)) {
> print(paste("Lendo",arquivos[i]))
> #Seu codigo aqui
> }
>
> #ai insira seu código ali, fazendo as operações que tem que
> fazer, e juntando os arquivos, salvando, o que for necessário.
>
> Em 8 de junho de 2015 10:06, joão Rodrigo Castro
> <joaorodrigo2005 em gmail.com <mailto:joaorodrigo2005 em gmail.com>>
> escreveu:
>
> Obrigado Augusto, vou dar uma olhada nas funções que vc citou.
>
> Um trecho do código:
> # Passo A
> Teste_SF = read.table("*dado1*.dat", dec=".",h=T
> ,col.names = c( "ano", "mes", "jday","Rad","Tmax",
> "Tmin","stopo","trans","dt","lat","lon"))
> Teste = subset(Teste_SF, trans<0.81 & Rad>1)
> summary(Teste)
>
> # Passo B
> dr = 1 + 0.033 * cos(0.0172*Teste$jday)
> declin = 0.409 * sin(0.0172*Teste$jday - 1.39)
> omega = acos(-tan(Teste$lat*pi/180) * tan(declin))
> Teste$Rad_Pot =
> 37.6*dr*(omega*sin(declin)*sin(Teste$lat*pi/180) +
> cos(declin)*cos(Teste$lat*pi/180)*sin(omega))
>
> Há ainda outros passos onde os atributos dos arquivos são
> lidos e posteriormente utilizados em outros cálculos. No
> final é gerado um arquivo de saída com o write.table com
> os resultados obtidos.
>
> Então como são 38 arquivos (dado1.dat, dado2.dat, etc
> ..... ) a utilização de alguma função que permita a
> leitura de todos os arquivos, e depois fazer um loop pelos
> arquivos, tornaria mais dinâmica a tarefa.
>
> Obrigado pelas dicas!
> João
>
>
>
> Em 8 de junho de 2015 10:42, Augusto Ribas
> <ribas.aca em gmail.com <mailto:ribas.aca em gmail.com>> escreveu:
>
> Não entendi exatamente o problema, mas os arquivos
> estão em um determinado diretorio?
> Não daria para dar um list.files() para pegar a lista
> de arquivos dos diretorio, usar um grep() para
> selecionar os arquivos que quer ler e então em um loop
> ir ler os arquivos com read.table, ai você pode ir
> dando merge ou concatenando eles.
>
> Da um exemplo de código como você está fazendo, talvez
> alguém tenha uma ideia melhor.
>
> Em 8 de junho de 2015 08:45, joão Rodrigo Castro
> <joaorodrigo2005 em gmail.com
> <mailto:joaorodrigo2005 em gmail.com>> escreveu:
>
> Pessoal,
>
>
> Tenho utilizado o read.table para ler arquivos e
> realizar tarefas simples. Contudo, agora necessito
> rodar 6 programas para 38 localidades distintas e
> tenho feito isso ponto a ponto, para cada um dos
> modelos... Já rodei os programas uma vez dessa
> maneira trabalhosa e agora pretendo automatizar o
> processo lendo todos os 38 arquivos de uma só vez
> e rodar cada um dos modelos para os 38 arquivos
> (um modelo por vez).
>
> Minha pergunta é: há alguma função para leitura de
> vários arquivos juntos ?
>
> Por favor, se não ficar claro posso tentar
> explicar melhor!
> abs
> --
> João Rodrigo de Castro
> Programa de Pós-Graduação em Meteorologia
> Bolsista Laboratório de Agrometeorologia - Embrapa
> Clima Temperado
> Universidade Federal de Pelotas
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> <mailto:R-br em listas.c3sl.ufpr.br>
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem
> (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
>
>
>
> --
> Grato
> Augusto C. A. Ribas
> Site Pessoal: http://recologia.com.br/
> Github: https://github.com/Squiercg
> Lattes: http://lattes.cnpq.br/7355685961127056
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br <mailto:R-br em listas.c3sl.ufpr.br>
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem
> (http://www.leg.ufpr.br/r-br-guia) e forneça código
> mínimo reproduzível.
>
>
>
>
> --
> João Rodrigo de Castro
> Programa de Pós-Graduação em Meteorologia
> Bolsista Laboratório de Agrometeorologia - Embrapa Clima
> Temperado
> Universidade Federal de Pelotas
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br <mailto:R-br em listas.c3sl.ufpr.br>
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia)
> e forneça código mínimo reproduzível.
>
>
>
>
> --
> Grato
> Augusto C. A. Ribas
> Site Pessoal: http://recologia.com.br/
> Github: https://github.com/Squiercg
> Lattes: http://lattes.cnpq.br/7355685961127056
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br <mailto:R-br em listas.c3sl.ufpr.br>
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e
> forneça código mínimo reproduzível.
>
>
>
>
> --
> João Rodrigo de Castro
> Programa de Pós-Graduação em Meteorologia
> Bolsista Laboratório de Agrometeorologia - Embrapa Clima Temperado
> Universidade Federal de Pelotas
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br <mailto:R-br em listas.c3sl.ufpr.br>
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e
> forneça código mínimo reproduzível.
>
>
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
--
Best regards,
Vinícius Lionel Mateus, MSc (http://lattes.cnpq.br/6501001637020665)
Chemistry PhD Student
Atmospheric Chemistry Laboratory - Dep. Chemistry
PUC-Rio - Pontifical Catholic University of Rio de Janeiro
Marquês de São Vicente, 225, Gávea - Rio de Janeiro, RJ - Brazil CEP: 22451-900
Phone: (+45) 26 28 28 51
(+55) (21) 3527-1327
(+55) (21) 993 - 588 - 051
Skype: vinicius.lionel
http://www.qui.puc-rio.br/index.html
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20150615/a91c8a94/attachment.html>
Mais detalhes sobre a lista de discussão R-br