
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@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@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.