[R-br] Exclusão de casos por critério temporal

Éder Comunello comunello.eder em gmail.com
Sexta Julho 29 10:20:40 BRT 2016


Paulo, bom dia!

# Uma alternativa é identificar o trimestre de cada observação...
dat <- data.frame(id=rep(1:4, 6:3), ano=2016,
mes=c(1,2,3,5,6,10,3,7,8,11,12,2,5,9,12,1,3,4))
dat$tri <- ceiling(dat$mes/4)+1

# E preservar somente a mais antiga dentro de cada trimestre...
del <- which(duplicated(dat[,c(1,2,4)]))
dat[-del,] # dados que permanecem
dat[del,]  # dados retirados


================================================
Éder Comunello
Researcher at Brazilian Agricultural Research Corporation (Embrapa)
DSc in Agricultural Systems Engineering (USP/Esalq)
MSc in Environ. Sciences (UEM), Agronomist (UEM)
---
Embrapa Agropecuária Oeste, Dourados, MS, Brazil |<O>|
================================================
GEO, -22.2752, -54.8182, 408m
UTC-04:00 / DST: UTC-03:00




Em 27 de julho de 2016 09:07, Paulo Dick via R-br <r-br em listas.c3sl.ufpr.br>
escreveu:

> Companheiros, bom dia.
>
> Gostaria que me ajudassem na solução do seguinte problema:
>
> 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.
>
> Segue sintaxe para gerar fragmento extraído desta base:
> structure(list(identificador = structure(c(1L, 1L, 2L, 2L, 3L,
> 3L, 4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L, 8L, 8L, 8L, 9L, 9L, 10L,
> 10L), .Label = c("1", "2", "3", "4", "5", "6", "7", "8", "9",
> "10"), class = "factor"), ano = c(2016L, 2016L, 2016L, 2016L,
> 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L,
> 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L), mes = c(5L,
> 6L, 2L, 7L, 3L, 7L, 2L, 6L, 2L, 5L, 5L, 6L, 6L, 7L, 1L, 3L, 6L,
> 3L, 6L, 2L, 7L)), .Names = c("identificador", "ano", "mes"), row.names =
> c(NA,
> 21L), class = "data.frame")
>
> Agradeço pela ajuda.
>
> Abraços
>
> *Paulo Dick*
> Estatístico / Epidemiologia em Saúde Pública
> Tel.: (55 21) 99591-2716
>
> _______________________________________________
> 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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160729/bf69a25c/attachment.html>


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