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

Paula Mendes Luz luzpaulamendes em gmail.com
Terça Junho 12 19:06:26 BRT 2012


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.


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