Prezado Fernando, não sei se é pertinente, mas... Deus o abençoe e o ilumine!!!
Era exatamente o que eu queria, resolveu o problema!!!
Obrigado!!!! Boa tarde a todos!!!
Diogo JerônimoBacharel em Ciências Estatísticas - ENCE/IBGEMestre em Metrologia
- PUC-Rio/PósMQICONRE: 8514 - SÉRIE A
Em terça-feira, 19 de maio de 2020 00:03:33 BRT, Fernando Souza
<[email protected]> escreveu:
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 Salario1 Diogo 42 50002 Patrícia 40 70003
João 41 80004 Alexandre 40 9000
> importaBD(dir="~/Downloads/bancosex/",nameBD=c("banco3.csv","banco2.csv"))
> Nome Idade Salario1 Angélica 40 95002 Nádia 38 75003
> João 41 80004 Alexandre 40 9000
On May 18 2020, at 11:24 pm, Fernando Souza <[email protected]> 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 Salario1 Diogo 42 50002 Patrícia 40 70003 Diogo
42 50004 Patrícia 40 7000
att
Em seg., 18 de mai. de 2020 às 19:39, Diogo Jerônimo por (R-br)
<[email protected]> 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) <[email protected]> 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),
<[email protected]> 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
[email protected]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-brLeia o guia de postagem
(http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________R-br mailing
[email protected]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-brLeia o guia de postagem
(http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo
reproduzível._______________________________________________R-br mailing
[email protected]https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-brLeia
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/6519538815038307Blog:
https://producaoanimalcomr.wordpress.com/==========================================
_______________________________________________
R-br mailing list
[email protected]
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.