<div dir="ltr">Olá a todos,<div><br></div><div>Apliquei a solução proposta pelo Henrique na base completa e funcionou perfeitamente. A estrutura que eu tinha montado (com os dois loops) não tinha funcionado 100%, mas esta sim:</div><div><br></div><div><span style="font-size:12.8px">teste[unlist(sapply(split(</span><wbr style="font-size:12.8px"><span style="font-size:12.8px">teste, teste$identificador), function(x)c(TRUE, unlist(diff(x$mes) >= 3)))),]</span><br></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Abraços e obrigado novamente.</span></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><b><br></b></div><div dir="ltr"><b>Paulo Dick</b><div>Estatístico / <span style="font-size:12.8px">Epidemiologia em Saúde Pública</span></div><div>Tel.: (55 21) 99591-2716</div></div></div></div></div></div></div></div></div>
<br><div class="gmail_quote">Em 1 de agosto de 2016 11:15, Éder Comunello <span dir="ltr"><<a href="mailto:comunello.eder@gmail.com" target="_blank">comunello.eder@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"><div class="gmail_default"><div class="gmail_default"><font face="verdana, sans-serif">Paulo, olá novamente!</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Fiz um teste, aproveitando a ideia colocada pelo Henrique...</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">teste <- data.frame(id=rep(1:3, each=10), ano=2016, mes=c(1:5,7,9:12,1:3,6:12,1:<wbr>10))</font></div><div class="gmail_default"><font face="verdana, sans-serif">teste$tri <- ceiling(teste$mes/3)+1</font></div><div class="gmail_default"><font face="verdana, sans-serif">del <- which(duplicated(teste[,c(1,2,<wbr>4)]))</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">res1 <- teste[-del,]; res1</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">res2 <- teste[unlist(sapply(split(<wbr>teste, teste$id), function(x) c(TRUE, unlist(diff(x$mes) >= 3)))),]; res2</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">res3 <- res1[unlist(sapply(split(res1, res1$id), function(x) c(TRUE, unlist(diff(x$mes) >= 3)))),]; res3</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Mas acredito que ainda não seja o que você pretende. Pelo que entendi a saída correta seria tal como colocado abaixo:</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif"># id ano mes tri</font></div><div class="gmail_default"><font face="verdana, sans-serif"># 1 1 2016 1 2</font></div><div class="gmail_default"><font face="verdana, sans-serif"># 4 1 2016 4 3</font></div><div class="gmail_default"><font face="verdana, sans-serif"># 6 1 2016 7 4</font></div><div class="gmail_default"><font face="verdana, sans-serif"># 8 1 2016 10 5</font></div><div class="gmail_default"><font face="verdana, sans-serif"># 11 2 2016 1 2</font></div><div class="gmail_default"><font face="verdana, sans-serif"># 14 2 2016 6 3</font></div><div class="gmail_default"><font face="verdana, sans-serif"># 15 2 2016 9 4</font></div><div class="gmail_default"><font face="verdana, sans-serif"># 18 2 2016 12 5</font></div><div class="gmail_default"><font face="verdana, sans-serif"># 21 3 2016 1 2</font></div><div class="gmail_default"><font face="verdana, sans-serif"># 24 3 2016 4 3</font></div><div class="gmail_default"><font face="verdana, sans-serif"># 27 3 2016 7 4</font></div><div class="gmail_default"><font face="verdana, sans-serif"># 30 3 2016 10 5</font></div></div><div class="gmail_extra"><span class=""><br clear="all"><div><div data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><span><br>==============================<wbr>==================<br>Éder Comunello<br>Researcher at Brazilian Agricultural Research Corporation (Embrapa)<br>DSc in Agricultural Systems Engineering (USP/Esalq)<br>MSc in Environ. Sciences (UEM), <span>Agronomist (UEM)</span><br>---<br>Embrapa Agropecuária Oeste, Dourados, MS, Brazil |<O>|<br>==============================<wbr>==================<br>GEO, -22.2752, -54.8182, 408m<br>UTC-04:00 / DST: UTC-03:00</span><div><div><div><br></div><div><br></div></div><div style="font-size:small"><br></div></div></div></div></div></div></div></div></div></div></div></div></div>
<br></span><div><div class="h5"><div class="gmail_quote">Em 1 de agosto de 2016 09:14, Éder Comunello <span dir="ltr"><<a href="mailto:comunello.eder@gmail.com" target="_blank">comunello.eder@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"><div style="font-family:verdana,sans-serif"><span style="color:rgb(0,0,0);font-family:monospace,monospace;font-size:13.44px">Só corrigindo o código que postei... De fato, para o trimestre seria:</span></div><div style="font-family:verdana,sans-serif"><span style="color:rgb(0,0,0);font-family:monospace,monospace;font-size:13.44px"><br></span></div><div style="font-family:verdana,sans-serif"><span style="color:rgb(0,0,0);font-family:monospace,monospace;font-size:13.44px">dat$tri <- ceiling(dat$mes/3)+1</span><br></div><div class="gmail_extra"><span><br clear="all"><div><div data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><span><br>==============================<wbr>==================<br>Éder Comunello<br>Researcher at Brazilian Agricultural Research Corporation (Embrapa)<br>DSc in Agricultural Systems Engineering (USP/Esalq)<br>MSc in Environ. Sciences (UEM), <span>Agronomist (UEM)</span><br>---<br>Embrapa Agropecuária Oeste, Dourados, MS, Brazil |<O>|<br>==============================<wbr>==================<br>GEO, -22.2752, -54.8182, 408m<br>UTC-04:00 / DST: UTC-03:00</span><div><div><div><br></div><div><br></div></div><div style="font-size:small"><br></div></div></div></div></div></div></div></div></div></div></div></div></div>
<br></span><div><div><div class="gmail_quote">Em 29 de julho de 2016 09:20, Éder Comunello <span dir="ltr"><<a href="mailto:comunello.eder@gmail.com" target="_blank">comunello.eder@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"><div style="font-family:verdana,sans-serif">Paulo, bom dia!<br></div><div style="font-family:verdana,sans-serif"><br># Uma alternativa é identificar o trimestre de cada observação...<br><span style="font-family:monospace,monospace">dat <- data.frame(id=rep(1:4, 6:3), ano=2016, mes=c(1,2,3,5,6,10,3,7,8,11,<wbr>12,2,5,9,12,1,3,4))<br>dat$tri <- ceiling(dat$mes/4)+1</span><br><br># E preservar somente a mais antiga dentro de cada trimestre...<br><span style="font-family:monospace,monospace">del <- which(duplicated(dat[,c(1,2,4)<wbr>]))<br>dat[-del,] # dados que permanecem<br>dat[del,] # dados retirados</span><br></div></div><div class="gmail_extra"><br clear="all"><div><div data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><span><br>==============================<wbr>==================<br>Éder Comunello<br>Researcher at Brazilian Agricultural Research Corporation (Embrapa)<br>DSc in Agricultural Systems Engineering (USP/Esalq)<br>MSc in Environ. Sciences (UEM), <span>Agronomist (UEM)</span><br>---<br>Embrapa Agropecuária Oeste, Dourados, MS, Brazil |<O>|<br>==============================<wbr>==================<br>GEO, -22.2752, -54.8182, 408m<br>UTC-04:00 / DST: UTC-03:00</span><div><div><div><br></div><div><br></div></div><div style="font-size:small"><br></div></div></div></div></div></div></div></div></div></div></div></div></div>
<br><div class="gmail_quote"><div><div>Em 27 de julho de 2016 09:07, Paulo Dick via R-br <span dir="ltr"><<a href="mailto:r-br@listas.c3sl.ufpr.br" target="_blank">r-br@listas.c3sl.ufpr.br</a>></span> escreveu:<br></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">Companheiros, bom dia.<div><br></div><div>Gostaria que me ajudassem na solução do seguinte problema:</div><div><br></div><div>Tenho uma base que possui mais de um registro por indivíduo, que preciso fazer uma limpeza a partir das variáveis mês e ano. Preciso retirar apenas os registros que possuem intervalo de tempo menor que 3 meses entre eles, priorizando os registros mais antigos. Ou seja, se tenho 4 registros para um mesmo indivíduo, nos meses 1, 3, 5 e 6 (mesmo ano), fico com as linhas dos meses 1 e 5, e excluo a linha dos meses 3 e 6.</div><div><br></div><div>Segue sintaxe para gerar fragmento extraído desta base:<br></div><div><div><font face="monospace, monospace">structure(list(identificador = structure(c(1L, 1L, 2L, 2L, 3L, </font></div><div><font face="monospace, monospace">3L, 4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L, 8L, 8L, 8L, 9L, 9L, 10L, </font></div><div><font face="monospace, monospace">10L), .Label = c("1", "2", "3", "4", "5", "6", "7", "8", "9", </font></div><div><font face="monospace, monospace">"10"), class = "factor"), ano = c(2016L, 2016L, 2016L, 2016L, </font></div><div><font face="monospace, monospace">2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, </font></div><div><font face="monospace, monospace">2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L), mes = c(5L, </font></div><div><font face="monospace, monospace">6L, 2L, 7L, 3L, 7L, 2L, 6L, 2L, 5L, 5L, 6L, 6L, 7L, 1L, 3L, 6L, </font></div><div><font face="monospace, monospace">3L, 6L, 2L, 7L)), .Names = c("identificador", "ano", "mes"), row.names = c(NA, </font></div><div><font face="monospace, monospace">21L), class = "data.frame")</font></div></div><div><br></div><div>Agradeço pela ajuda.</div><div><br></div><div>Abraços</div><div><div><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><b><br></b></div><div dir="ltr"><b>Paulo Dick</b><div>Estatístico / <span style="font-size:12.8px">Epidemiologia em Saúde Pública</span></div><div>Tel.: (55 21) 99591-2716</div></div></div></div></div></div></div></div></div>
</div></div>
<br></div></div>______________________________<wbr>_________________<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" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/<wbr>cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-<wbr>guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div>
</blockquote></div><br></div></div></div></div>
</blockquote></div><br></div></div></div></div>
</blockquote></div><br></div>