[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