
Bom dia, Outra sugestão com {lubridate}. ### <code r> require(lubridate) DADOS = data.frame( NASCIMENTO = c("26/11/97", "20/03/99", "14/05/99","06/05/98", "03/01/00", "19/05/97", "01/02/01", "28/11/97", "10/02/00"), DATA_FATO = c("23/02/15", "28/03/15", "08/04/15", "08/04/15", "08/04/15", "08/05/15", "17/05/15", "03/06/15", "03/06/15")) ## converter para Date DADOS$NASCIMENTO = dmy(DADOS$NASCIMENTO) DADOS$DATA_FATO = dmy(DADOS$DATA_FATO) ## calcula o intervalo em anos DADOS$IDADE = as.period(interval(DADOS$NASCIMENTO, DADOS$DATA_FATO)) head(DADOS) # NASCIMENTO DATA_FATO IDADE # 1 1997-11-26 2015-02-23 17y 2m 28d 0H 0M 0S # 2 1999-03-20 2015-03-28 16y 0m 8d 0H 0M 0S # 3 1999-05-14 2015-04-08 15y 10m 25d 0H 0M 0S # 4 1998-05-06 2015-04-08 16y 11m 2d 0H 0M 0S # 5 2000-01-03 2015-04-08 15y 3m 5d 0H 0M 0S # 6 1997-05-19 2015-05-08 17y 11m 19d 0H 0M 0S DADOS$IDADE@year # [1] 17 16 15 16 15 17 14 17 15 DADOS$IDADE@month # [1] 2 0 10 11 3 11 3 6 3 ### aproximações com certa imprecisão! year(DADOS$DATA_FATO)-year(DADOS$NASCIMENTO) # [1] 18 16 16 17 15 18 14 18 15 floor((DADOS$DATA_FATO-DADOS$NASCIMENTO)/365.25) # Time differences in days # [1] 17 16 15 16 15 17 14 17 15 ### </code> ================================================ É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 16 de junho de 2016 22:23, salah via R-br <r-br@listas.c3sl.ufpr.br> escreveu:
segue sugestão
library(eeptools)
DADOS = data.frame( NASCIMENTO = c("26/11/97", "20/03/99", "14/05/99","06/05/98", "03/01/00", "19/05/97", "01/02/01", "28/11/97", "10/02/00"), DATA_FATO = c("23/02/15", "28/03/15", "08/04/15", "08/04/15", "08/04/15", "08/05/15", "17/05/15", "03/06/15", "03/06/15"))
## converter para Date DADOS$NASCIMENTO = as.Date(DADOS$NASCIMENTO, "%d/%m/%y") DADOS$DATA_FATO = as.Date(DADOS$DATA_FATO, "%d/%m/%y")
## calcula o intervalo em anos DADOS$IDADE = floor(age_calc(DADOS$NASCIMENTO, DADOS$DATA_FATO, units = "years"))
DADOS
saudações
Em 16/06/2016 14:45, Amikobh via R-br escreveu:
Prezados,
Desde já, obrigado pela ajuda.
Tendo duas variáveis com datas referentes a determinada pessoa:
NASCIMENTO DATA_FATO 26/11/97 23/02/15 20/03/99 28/03/15 14/05/99 08/04/15 06/05/98 08/04/15 03/01/00 08/04/15 19/05/97 08/05/15 01/02/01 17/05/15 28/11/97 03/06/15 10/02/00 03/06/15
Como procedo para criar mais uma coluna que calcula a idade no dia da ocorrência de determinado fato? De tal forma que obtenha:
NASCIMENTO DATA_FATO IDADE 26/11/97 23/02/15 17 20/03/99 28/03/15 16 14/05/99 08/04/15 15 06/05/98 08/04/15 16 03/01/00 08/04/15 15 19/05/97 08/05/15 17 01/02/01 17/05/15 14 28/11/97 03/06/15 17 10/02/00 03/06/15 15
Valeu, gente!
_______________________________________________ R-br mailing listR-br@listas.c3sl.ufpr.brhttps://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.
_______________________________________________ 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.