[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