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

Eder David Borges da Silva eder em leg.ufpr.br
Sábado Junho 16 21:55:58 BRT 2012


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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120616/86e1f114/attachment.html>


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