[R-br] como juntar dois bancos em função de um intervalo

Paula Mendes Luz luzpaulamendes em gmail.com
Domingo Junho 17 12:05:29 BRT 2012


olá eder, de fato, agora funciona. obrigada!

2012/6/16 Eder David Borges da Silva <eder em leg.ufpr.br>:
> Paula,
> Funciona sim:
> id <- c(1, 1, 1, 2, 2)
> ent <- c(1, 10, 20, 1, 30)
> sai <- c(9, 19, 40, 29, 50)
> grupo <- c(1, 2, 3, 1, 2)
> banco1 <- data.frame(id, ent, sai, grupo)##Troque os cbind por data frame
>
> id <- c(1, 1, 1, 1, 1, 2, 2, 2, 2)
> dia <- c(5, 8, 12, 18, 25, 22, 25, 29, 41)
> teste <- c("A", "A", "B", "B", "A", "B", "B", "C", "D")
> banco2 <- data.frame(id, dia, teste)
>
> banco3 <- merge(banco1, banco2)
> banco3[banco3$dia>=banco3$ent & banco3$dia<=banco3$sai,]
>
> Oque estava fazendo não funcionar era seu cbind, que no banco dois estava
> convertendo os numeros para factor.
> Att
>
>
> Em 16 de junho de 2012 18:33, Paula Mendes Luz <luzpaulamendes em gmail.com>
> escreveu:
>
>> olá eder
>> agradeço a tentativa mas não funcionou... na verdade nem entendi que o R
>> fez!...
>> se quiser repetir, rodei os comandos abaixo:
>>
>> id <- c(1, 1, 1, 2, 2)
>> ent <- c(1, 10, 20, 1, 30)
>> sai <- c(9, 19, 40, 29, 50)
>> grupo <- c(1, 2, 3, 1, 2)
>> banco1 <- cbind(id, ent, sai, grupo)
>>
>> id <- c(1, 1, 1, 1, 1, 2, 2, 2, 2)
>> dia <- c(5, 8, 12, 18, 25, 22, 25, 29, 41)
>> teste <- c("A", "A", "B", "B", "A", "B", "B", "C", "D")
>> banco2 <- cbind(id, dia, teste)
>>
>> banco3 <- merge(banco1, banco2)
>> banco3$ent<-as.numeric(banco3$ent)
>> banco3$sai<-as.numeric(banco3$sai)
>> banco3$dia<-as.numeric(banco3$dia)
>> banco3[banco3$dia>=banco3$ent & banco3$dia<=banco3$sai,]
>>
>>
>> 2012/6/12 Eder David Borges da Silva <eder em leg.ufpr.br>:
>> > Acho que pode ser isso:
>> > banco3 <- merge(banco1,banco2)
>> > banco3[banco3$dia>=banco3$ent &banco3$dia<=banco3$sai,]
>> > Att
>> > Éder
>> >
>> > Em 12 de junho de 2012 19:06, Paula Mendes Luz
>> > <luzpaulamendes em gmail.com>
>> > escreveu:
>> >>
>> >> oi pessoal
>> >>
>> >> eu normalmente utilizo o merge() para juntar bancos em função de 1 ou
>> >> mais variáveis que são iguais nos dois bancos. também normalmente
>> >> tenho bancos com medidas repetidas para cada indivíduo de modo que
>> >> novas linhas são criadas no ato do merge() em função das informações
>> >> dos bancos originais.
>> >>
>> >> agora preciso juntar dois bancos em função de um intervalo de números
>> >> (na verdade são datas mas isso não importa):
>> >>
>> >> um exemplo do que preciso fazer p o banco original com > 3000 ids seria
>> >>
>> >> banco1 tem o id, a entrada, a saída, e o grupo
>> >>
>> >> id <- c(1, 1, 1, 2, 2)
>> >> ent <- c(1, 10, 20, 1, 30)
>> >> sai <- c(9, 19, 40, 29, 50)
>> >> grupo <- c(1, 2, 3, 1, 2)
>> >>
>> >> banco1 <- cbind(id, ent, sai, grupo)
>> >>
>> >> banco2 tem o id, o dia, tipo do teste
>> >>
>> >> id <- c(1, 1, 1, 1, 1, 2, 2, 2, 2)
>> >> dia <- c(5, 8, 12, 18, 25, 22, 25, 29, 41)
>> >> teste <- c("A", "A", "B", "B", "A", "B", "B", "C", "D")
>> >>
>> >> banco2 <- cbind(id, dia, teste)
>> >>
>> >> e o banco 3 seria o merge() dos dois em função da avaliação se o DIA
>> >> do banco2 está contido no intervalo (entre ENT e SAI) do banco1
>> >>
>> >> o resultado seria o banco 3 com 5 linhas para o id1 com as 5 vars da
>> >> seguinte forma
>> >> id ent sai grupo dia teste
>> >> 1 1 9 1 5 A
>> >> 1 1 9 1 8 A
>> >> 1 10 19 2 12 B
>> >> 1 10 19 2 18 B
>> >> 1 20 40 3 25 A
>> >>
>> >> e 4 linhas para o id 2
>> >>
>> >> alguém pode ajudar???? eu li a respeito da função findInterval() mas
>> >> não consegui fazer funcionar....
>> >>
>> >> agradeço desde já! abraços, paula.
>> >> _______________________________________________
>> >> 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.


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