[R-br] Leitura de arquivos

Vinícius Lionel Mateus vinynegrelli em gmail.com
Segunda Junho 15 08:51:16 BRT 2015


Desculpa, David!
Estava lendo seu email junto com o do colega Romero. rsrs


On 06/15/2015 01:49 PM, Vinícius Lionel Mateus wrote:
> 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

-- 
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/d149a975/attachment.html>


Mais detalhes sobre a lista de discussão R-br