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

Fernando H Toledo fernandohtoledo em gmail.com
Ter Maio 19 23:12:31 -03 2020


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) 
> <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
>         <../../../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) <r-br em listas.c3sl.ufpr.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),
>             <r-br em listas.c3sl.ufpr.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
>         <https://link.getmailspring.com/link/8D1775C6-DE0A-4444-B3A2-CAC5A979A7D1@getmailspring.com/0?redirect=https%3A%2F%2Flink.getmailspring.com%2Flink%2FCFEBFDF1-5D91-411C-A929-6DE1BCA22D7F%40getmailspring.com%2F0%3Fredirect%3Dhttp%253A%252F%252Flattes.cnpq.br%252F6519538815038307%26recipient%3Dci1ickBsaXN0YXMuYzNzbC51ZnByLmJy&recipient=ci1ickBsaXN0YXMuYzNzbC51ZnByLmJy>
>         Blog: https://producaoanimalcomr.wordpress.com/
>         <https://link.getmailspring.com/link/8D1775C6-DE0A-4444-B3A2-CAC5A979A7D1@getmailspring.com/1?redirect=https%3A%2F%2Flink.getmailspring.com%2Flink%2FCFEBFDF1-5D91-411C-A929-6DE1BCA22D7F%40getmailspring.com%2F1%3Fredirect%3Dhttps%253A%252F%252Fproducaoanimalcomr.wordpress.com%252F%26recipient%3Dci1ickBsaXN0YXMuYzNzbC51ZnByLmJy&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://link.getmailspring.com/link/8D1775C6-DE0A-4444-B3A2-CAC5A979A7D1@getmailspring.com/2?redirect=https%3A%2F%2Flistas.inf.ufpr.br%2Fcgi-bin%2Fmailman%2Flistinfo%2Fr-br&recipient=ci1ickBsaXN0YXMuYzNzbC51ZnByLmJy>
>     Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia
>     <https://link.getmailspring.com/link/8D1775C6-DE0A-4444-B3A2-CAC5A979A7D1@getmailspring.com/3?redirect=http%3A%2F%2Fwww.leg.ufpr.br%2Fr-br-guia&recipient=ci1ickBsaXN0YXMuYzNzbC51ZnByLmJy>)
>     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.



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