[R-br] Selecionar bancos =?utf-8?Q?espec=C3=ADficos_?=de uma pasta

Fernando Souza nandodesouza em gmail.com
Ter Maio 19 23:34:32 -03 2020


É mesmo, muito bem lembrado Fernando Toledo. Não sou usuário Windows e não me atentei para esse detalhe até você chamar a atenção.

Muito obrigado!

On May 19 2020, at 11:12 pm, Fernando H Toledo por (R-br) <r-br em listas.c3sl.ufpr.br> wrote:
> Colegas, Em todos SOs um path (caminho/para/o/meu/diretorio/) é definido com / (forward slash), exceto o Windows que usa \ (backslash). Deve-se levar em conta que \ "dentro de uma string" no R significa um "scape", assim tem-se que por "\\" para ter o resultado esperado. att, FH On 5/19/20 7:44 PM, Fernando Souza por (R-br) wrote: > Mauro > > Eu utilizo o linux. No linux o edereço "~/Dowlnload/bancosex/" é o > mesmo que "/home/fernando/Dowlnload/bancosex/" > ele informa o caminho para a pasta "bancosex" > > no windows seria algo assim: > C:\Users\Mauro\Downloads\bancosex > > Você pode clicar com o botão direito do mouse sobre a pasta, ir em > propriedades e copiar o endereço > > > May 19 2020, at 9:26 pm, Mauro Sznelwar por (R-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 > 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) <../../../undefined//compose?to=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ô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) <../../../undefined//compose?to=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), > <../../../undefined//compose?to=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ô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 > <../../../undefined//compose?to=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 > <../../../undefined//compose?to=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 > <../../../undefined//compose?to=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/ > > ========================================== > > _______________________________________________ > 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. _______________________________________________ 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/200a98d2/attachment.html>


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