[R-br] Selecionar bancos específicos de uma pasta

Daniel Guimarães Tiezzi dtiezzi em usp.br
Ter Maio 19 21:34:01 -03 2020


Eu não conheço o Windows, mas não seria uma incompatibilidade do diretório HOME?

Daniel



> On 19 May 2020, at 21:26, Mauro Sznelwar por (R-br) <r-br em listas.c3sl.ufpr.br> wrote:
> 
> Não consegui rodar,alguém explica o motivo?
>  
> dir.create('~/Downloads/bancosex/')
>  
> Warning message:
> In dir.create("~/Downloads/bancosex/") :
>   não foi possível criar o diretório 'C:\Users\Mauro\Documents\Downloads\bancosex', motivo 'No such file or directory'
>  
>  
>  
> Uma pequena correção.
>  
> Considere esse código aqui.
>  
> att
>  
> dir.create('~/Downloads/bancosex/')
> banco1=data.frame(Nome=c("Diogo","Patrícia"),Idade=c(42,40),Salario=c(5000,7000))
> write.csv2(banco1,file='~/Downloads/bancosex/banco1.csv',row.names=FALSE)
> banco2=data.frame(Nome=c("João","Alexandre"),Idade=c(41,40),Salario=c(8000,9000))
> write.csv2(banco2,file='~/Downloads/bancosex/banco2.csv',row.names=FALSE)
> banco3=data.frame(Nome=c("Angélica","Nádia"),Idade=c(40,38),Salario=c(9500,7500))
> write.csv2(banco3,file='~/Downloads/bancosex/banco3.csv',row.names=FALSE)
>  
> importaBD <-function(dir,nameBD){
>  
>     lista<- vector(mode = "list", length =length(nameBD))
>    
>     setwd(dir)
>    
>     for(i in 1:length(nameBD)){
>  
>         lista[i]<-list.files(path=dir,pattern=nameBD[i])
>        
>     }
>  
>     arquivos<-lapply(lista, function(x) read.csv2(x, header=TRUE, sep=";"))
>  
>      
>     do.call("rbind",arquivos) 
>    
> }
>  
> Exemplo de uso
>  
>  importaBD(dir="~/Downloads/bancosex/",nameBD=c("banco1.csv","banco2.csv"))
>        Nome Idade Salario
> 1     Diogo    42    5000
> 2  Patrícia    40    7000
> 3      João    41    8000
> 4 Alexandre    40    9000
>  
> > importaBD(dir="~/Downloads/bancosex/",nameBD=c("banco3.csv","banco2.csv"))
>        Nome Idade Salario
> 1  Angélica    40    9500
> 2     Nádia    38    7500
> 3      João    41    8000
> 4 Alexandre    40    9000
>  
> On May 18 2020, at 11:24 pm, Fernando Souza <nandodesouza em gmail.com> wrote:
> Diogo,
> Segue minha solução a seu problema. Faça as adaptações necessárias.
>  
> Fiz algumas alterações em seu código para tornar a saídas mais legíveis.
>  
>  
> dir.create('~/Downloads/bancosex/')
> banco1=data.frame(Nome=c("Diogo","Patrícia"),Idade=c(42,40),Salario=c(5000,7000))
> write.csv2(banco1,file='~/Downloads/bancosex/banco1.csv',row.names=FALSE)
> banco2=data.frame(Nome=c("João","Alexandre"),Idade=c(41,40),Salario=c(8000,9000))
> write.csv2(banco2,file='~/Downloads/bancosex/banco2.csv',row.names=FALSE)
> banco3=data.frame(Nome=c("Angélica","Nádia"),Idade=c(40,38),Salario=c(9500,7500))
> write.csv2(banco3,file='~/Downloads/bancosex/banco3.csv',row.names=FALSE)
>  
> ## dir= uma string com o path para o diretório
> ## nameBD= um vetor string com os nomes completos dos arquivos (p.ex "meuarquivo.csv")
> 
> importaBD <-function(dir, nameBD){
> 
>     lista<- vector(mode = "list", length =length(nameBD))
>  
>     setwd(dir)
>    
>     for(i in 1:length(nameBD)){
> 
>         lista[[i]]<-list.files(path=dir,pattern=nameBD)
>        
>     }
> 
>     arquivos<-lapply(lista, function(x) read.csv2(x, header=TRUE, sep=";"))
> 
>     dados<-do.call("rbind",arquivos)
> 
>     print(dados)
>    
> }
> 
> importaBD(dir="~/Downloads/bancosex/",nameBD=c("banco1.csv","banco2.csv"))
>  
>   Nome Idade Salario
> 1    Diogo    42    5000
> 2 Patrícia    40    7000
> 3    Diogo    42    5000
> 4 Patrícia    40    7000
>  
> att
> 
> Em seg., 18 de mai. de 2020 às 19:39, Diogo Jerônimo por (R-br) <r-br em listas.c3sl.ufpr.br <x-msg://35/undefined//compose?to=r-br@listas.c3sl.ufpr.br>> escreveu:
> Oi Daniel, boa noite.
>  
> Esse exemplo eu dei para ilustrar, mas o meu caso é de bases de dados trimestrais em *.csv, onde cada base trimestral tem por volta de 100 Megas, bases que vem desde 2006 até 2020!!! 
>  
> Fora o tamanho, essas bases podem ter variáveis adicionais solicitadas pelo gestor ao longo dos anos (códigos adicionais, dado de alteração de um serviço...), e isso cria conflito se eu juntar as bases com número de colunas diferentes pelo "rbind".
>  
> No meu caso, um período em que tenho dados uniformes (sem alteração do número de colunas) é entre 2017 e 2018, e nesse caso, não posso apagar e nem copiar as outras bases (por motivos de segurança). Assim, eu teria de escolher somente as bases dos trimestres dos anos que me interessam (2017 trim1,...,2018 trim4) para processar a análise estatística de interesse.
>  
> Não sei se consegui ser claro, mas é isso.
>  
> Obrigado!!! 
>  
> Diogo Jerônimo
> Bacharel em Ciências Estatísticas - ENCE/IBGE
> Mestre em Metrologia - PUC-Rio/PósMQI
> CONRE: 8514 - SÉRIE A
>  
> Em segunda-feira, 18 de maio de 2020 18:14:38 BRT, Daniel Guimarães Tiezzi por (R-br) <r-br em listas.c3sl.ufpr.br <x-msg://35/undefined//compose?to=r-br@listas.c3sl.ufpr.br>> escreveu:
>  
>  
> Se VC sabe qual os arquivos VC precisa let, certo? Deixe somente eles no seu objeto listas.
>  
> Daniel
> 
> On Mon, 18 May 2020, 18:11 Mauro Sznelwar por (R-br), <r-br em listas.c3sl.ufpr.br <x-msg://35/undefined//compose?to=r-br@listas.c3sl.ufpr.br>> wrote:
> Tem o data set para rodar?
>  
> 
> 
>  
> Lista, bom dia e boa semana!!! Criei o "reproduzível" para explicar a dúvida. Nesse exemplo, de uma pasta, identifiquei arquivos "*.csv", e depois apliquei o lapply e o do.call para importar e juntar esses bancos:
>  
> dir.create('c:/users/diogo/desktop/bancosex/')
> banco1=data.frame(cbind(c("Diogo","Patrícia"),c(42,40),c(5000,7000)))
> write.csv2(banco1,file='c:/users/diogo/desktop/bancosex/banco1.csv',row.names=FALSE)
> banco2=data.frame(cbind(c("João","Alexandre"),c(41,40),c(8000,9000)))
> write.csv2(banco2,file='c:/users/diogo/desktop/bancosex/banco2.csv',row.names=FALSE)
> banco3=data.frame(cbind(c("Angélica","Nádia"),c(40,38),c(9500,7500)))
> write.csv2(banco3,file='c:/users/diogo/desktop/bancosex/banco3.csv',row.names=FALSE)
>  
> setwd('c:/users/diogo/desktop/bancosex/')
> lista<-list.files()
> arquivos<-lapply(lista, function(x) read.csv2(x, header=TRUE, sep=";")) 
> dados<-do.call("rbind", arquivos) 
>  
> Meu problema: esse código vai "pegar" TODOS os bancos da pasta antes de importar e juntar. Eu gostaria de pegar somente PARTE desses bancos (ex: apenas banco1 e banco2, apenas banco2 e banco3...).
>  
> Alguém saberia como fazer isso?
>  
> Obrigado!!! 
>  
> Diogo Jerônimo
> Bacharel em Ciências Estatísticas - ENCE/IBGE
> Mestre em Metrologia - PUC-Rio/PósMQI
> CONRE: 8514 - SÉRIE A
> _______________________________________________
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br <x-msg://35/undefined//compose?to=R-br@listas.c3sl.ufpr.br>
> 
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-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 <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 <x-msg://35/undefined//compose?to=R-br@listas.c3sl.ufpr.br>
> 
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-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 <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 <x-msg://35/undefined//compose?to=R-br@listas.c3sl.ufpr.br>
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-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 <http://www.leg.ufpr.br/r-br-guia>) e forneça código mínimo reproduzível.
> 
> 
> --
> 
> 
> Lattes: http://lattes.cnpq.br/6519538815038307 <https://link.getmailspring.com/link/CFEBFDF1-5D91-411C-A929-6DE1BCA22D7F@getmailspring.com/0?redirect=http%3A%2F%2Flattes.cnpq.br%2F6519538815038307&recipient=ci1ickBsaXN0YXMuYzNzbC51ZnByLmJy>
> Blog: https://producaoanimalcomr.wordpress.com/ <https://link.getmailspring.com/link/CFEBFDF1-5D91-411C-A929-6DE1BCA22D7F@getmailspring.com/1?redirect=https%3A%2F%2Fproducaoanimalcomr.wordpress.com%2F&recipient=ci1ickBsaXN0YXMuYzNzbC51ZnByLmJy>
> ==========================================
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-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 <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.

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20200519/b90c52e4/attachment.html>


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