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

Diogo Jerônimo diogojose21 em yahoo.com.br
Ter Maio 19 08:21:32 -03 2020


Obrigado Fernando, vou adequar meu código e ver o resultado!!! Bom dia!!!!
Diogo JerônimoBacharel em Ciências Estatísticas - ENCE/IBGEMestre em Metrologia - PUC-Rio/PósMQICONRE: 8514 - SÉRIE AEmail: diogojose21 em yahoo.com.brhttp://lattes.cnpq.br/8996149312896520 

    Em segunda-feira, 18 de maio de 2020 23:24:43 BRT, Fernando Souza <nandodesouza em gmail.com> escreveu:  
 
 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> 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ônimoBacharel em Ciências Estatísticas - ENCE/IBGEMestre em Metrologia - PUC-Rio/PósMQICONRE: 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> 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> 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ônimoBacharel em Ciências Estatísticas - ENCE/IBGEMestre em Metrologia - PUC-Rio/PósMQICONRE: 8514 - SÉRIE A_______________________________________________

_______________________________________________
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.

_______________________________________________
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.  _______________________________________________
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.



-- 

Lattes: http://lattes.cnpq.br/6519538815038307
Blog: https://producaoanimalcomr.wordpress.com/
==========================================  
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20200519/e091c7e9/attachment-0001.html>


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