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

Paula Mendes Luz luzpaulamendes em gmail.com
Sábado Junho 16 18:33:29 BRT 2012


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.


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