<div dir="ltr">Oi pessoal, consegui resolver aqui. O Diego me ajudou. <div><br></div><div>O problema que estava enfrentando é que existia a repetição de IDs na minha base de dados. Por exemplo, o ID 2 se repetia 15 vezes. A solução foi criar um novo<span style="font-size:12.8000001907349px"> </span><span style="font-size:12.8000001907349px">id que tenha a informação do antigo id e a identificação da unidade amostral dentro daquele id</span>. Feito isso, foi utilizado o merge. </div><div><br></div><div><br></div><div>Basicamente foi feito o seguinte, parte da minha base de dados era desse jeito:</div><div><br></div><div><br></div><div><div>> head(dados)</div><div> id var1 var2 var3 var4 var5 var6 var7 var8 var9</div><div>1 1 RJ 99 1 27.66667 2 15/12/2004 1 15/03/2005 358</div><div>2 2 RJ 1 1 35.32500 1 13/07/2001 1 27/02/2002 645</div><div>3 2 RJ 1 1 35.32500 1 13/07/2001 1 06/11/2007 73</div><div>4 2 RJ 1 1 35.32500 1 13/07/2001 1 03/12/2007 162</div><div>5 2 RJ 1 1 35.32500 1 13/07/2001 1 02/07/2002 546</div><div>6 2 RJ 1 1 35.32500 1 13/07/2001 1 06/12/2002 542</div><div><br></div><div><br></div><div>> head(dados1)</div><div> id var10</div><div>1 1 3.031408</div><div>2 2 4.710963</div><div>3 2 4.262451</div><div>4 2 5.334454</div><div>5 2 4.718502</div><div>6 2 4.413300</div><div><br></div><div><br></div><div><div>> dim(dados)</div><div>[1] 2074 10</div><div><br></div><div>> dim(dados1)</div><div>[1] 1782 2</div></div><div><br></div><div>O que queria é juntar essas duas bases, só que são de dimensões diferentes. O grande problema seria na repetição de IDs, pois somente o merge não ajudaria. Então a solução do Diego foi fazer o seguinte:<br><br><div><br></div><div><b>n.dados <- numeric(dim(dados)[1])</b></div><div><b>n.dados[1] <- 1</b></div><div><b>for(i in 2:dim(dados)[1]) {</b></div><div><b> n.dados[i] <- ifelse(test = dados[(i - 1), 'id'] == dados[i, 'id'], yes = n.dados[i - 1] + 1, no = 1)</b></div><div><b>}</b></div><div><b><br></b></div><div><b>n.dados1 <- numeric(dim(dados1)[1])</b></div><div><b>n.dados1[1] <- 1</b></div><div><b>for(i in 2:dim(dados1)[1]) {</b></div><div><b> n.dados1[i] <- ifelse(test = dados1[(i - 1), 'id'] == dados1[i, 'id'], yes = n.dados1[i - 1] + 1, no = 1)</b></div><div><b>}</b></div><div><b><br></b></div><div><b>ID <- paste0(formatC(dados[, 'id'], width = 4, flag = '0'), formatC(n.dados, width = 2, flag = '0'))</b></div><div><b>DADOS <- cbind(ID, dados)</b></div><div><b><br></b></div><div><b>ID <- paste0(formatC(dados1[, 'id'], width = 4, flag = '0'), formatC(n.dados1, width = 2, flag = '0'))</b></div><div><b>DADOS1 <- cbind(ID, dados1)</b></div><div><b><br></b></div><div><br></div><div><br></div></div><div><br></div><div>Rodando o script acima, a base de dados ficou da seguinte forma:</div><div><br></div><div>> head(DADOS)</div><div> ID id var1 var2 var3 var4 var5 var6 var7 var8 var9</div><div>1 000101 1 RJ 99 1 27.66667 2 15/12/2004 1 15/03/2005 358</div><div>2 000201 2 RJ 1 1 35.32500 1 13/07/2001 1 27/02/2002 645</div><div>3 000202 2 RJ 1 1 35.32500 1 13/07/2001 1 06/11/2007 73</div><div>4 000203 2 RJ 1 1 35.32500 1 13/07/2001 1 03/12/2007 162</div><div>5 000204 2 RJ 1 1 35.32500 1 13/07/2001 1 02/07/2002 546</div><div>6 000205 2 RJ 1 1 35.32500 1 13/07/2001 1 06/12/2002 542</div><div><br></div><div><br></div><div>> head(DADOS1)</div><div> ID id var10</div><div>1 000101 1 3.031408</div><div>2 000201 2 4.710963</div><div>3 000202 2 4.262451</div><div>4 000203 2 5.334454</div><div>5 000204 2 4.718502</div><div>6 000205 2 4.413300</div></div><div><br></div><div><br></div><div>Utilizando o merge:</div><div><br></div><div><b>k<-merge(x = DADOS, y = DADOS1, by = 'ID', all.y = TRUE)</b><br></div><div><br></div><div><div>head(k)</div><div> ID id.x var1 var2 var3 var4 var5 var6 var7 var8 var9 id.y var10</div><div>1 000101 1 RJ 99 1 27.66667 2 15/12/2004 1 15/03/2005 358 1 3.031408</div><div>2 000201 2 RJ 1 1 35.32500 1 13/07/2001 1 27/02/2002 645 2 4.710963</div><div>3 000202 2 RJ 1 1 35.32500 1 13/07/2001 1 06/11/2007 73 2 4.262451</div><div>4 000203 2 RJ 1 1 35.32500 1 13/07/2001 1 03/12/2007 162 2 5.334454</div><div>5 000204 2 RJ 1 1 35.32500 1 13/07/2001 1 02/07/2002 546 2 4.718502</div><div>6 000205 2 RJ 1 1 35.32500 1 13/07/2001 1 06/12/2002 542 2 4.413300</div></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>Agradeço à todos pela ajuda e atenção.</div><div><br></div><div><br></div><div>Grande abraço e ótima semana,</div><div><br></div><div><br></div><div><br></div><div>Victor Eduardo</div></div><div class="gmail_extra"><br><div class="gmail_quote">Em 16 de maio de 2015 14:53, Paulo Abreu <span dir="ltr"><<a href="mailto:abreups@me.com" target="_blank">abreups@me.com</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Victor,<div><br></div><div>Manda seu código que fica mais fácil da gente ver o que pode ter dado errado.</div><div><div class="h5"><div><br><div><blockquote type="cite"><div>Em 16/05/2015, à(s) 14:38, Paulo Dick <<a href="mailto:paulopcdick@gmail.com" target="_blank">paulopcdick@gmail.com</a>> escreveu:</div><br><div>Olá Victor,<div>Veja se os valores no id nas duas está no mesmo formato, talvez um maiúsculo ou minúsculo diferente pode fazer com que ele não case as informações direito.</div><div><br>Em sábado, 16 de maio de 2015, Victor Eduardo <<a href="mailto:victorduca08@gmail.com" target="_blank">victorduca08@gmail.com</a>> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Oi Diego, eu tentei isso, e ele simplesmente aumenta o número de linhas. Sobe para mais de 20 mil linhas na hora do merge<div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">Em 16 de maio de 2015 13:32, Diego Miro <span dir="ltr"><<a>d.miro1089@gmail.com</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Victor, tente usar o argumento (all.x = TRUE) dentro do merge. Dessa forma você estará fazendo um Left Join. <div><br></div><div>Ele vai retornar a tabela dados inteira, com todos os seus registros e apenas os registros de dados1 que tenham um id pertencente a coluna id de dados. Caso não encontre o id em dados, retorna NA em dados1.<div><br></div><div>merge(x = dados, y = dados1, by = 'Id', all.x = TRUE) </div></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">Em 16 de maio de 2015 12:00, Fernando Antonio de souza <span dir="ltr"><<a>nandodesouza@gmail.com</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">Veja a função merge()</p>
<div class="gmail_quote"><div><div>Em 16/05/2015 11:35, "Victor Eduardo" <<a>victorduca08@gmail.com</a>> escreveu:<br type="attribution"></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr">Bom dia, pessoal!<div><br></div><div>Estou com um problema na hora de juntar a base de dados. Estou com duas bases com as seguintes dimensões:<br><br><div>> dim(dados)</div><div>[1] 2056 11</div><div><br></div><div><br></div><div>> dim(dados1)</div><div>[1] 1782 2</div></div><div><br></div><div><br></div><div><br></div><div>Ambas as bases possuem uma variável chamada "id". O que queria é formar um subconjunto a partir de dados1 baseado nesses ids, ou seja, aproveitaria as variáveis da base "dados" com as variáveis em "dados1".<br><br><br>Eu tentei com o merge e não está dando certo. Existe alguma função que faça isso?</div><div><br></div><div><br></div><div><br></div><div>Abraços e ótima semana!</div></div>
<br></div></div>_______________________________________________<br>
R-br mailing list<br>
<a>R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a>R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
R-br mailing list<br>
<a>R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div>
</blockquote></div><br><br>-- <br><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><b><br></b></div><div dir="ltr"><b>Paulo Dick</b><div>Estatístico</div><div>Mestrando em Epidemiologia em Saúde Pública</div><div>Tel.: (55 21) 99591-2716</div></div></div></div></div></div><br>
_______________________________________________<br>R-br mailing list<br><a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br><a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.</div></blockquote></div><br></div></div></div></div><br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div>