
Olá pessoal, como passar a diferença entre datas (idade) em dias para anos? Já havia feito isso em algum lugar, mas não encontro. datanasc=c(19250405,19300809,19400402) dataint=c(20080302,20090506,20080104) datanasc=as.character(datanasc,"%Y%m%d") dataint=as.character(dataint,"%Y%m%d") datanasc=as.Date(datanasc,"%Y%m%d") dataint=as.Date(dataint,"%Y%m%d") idade=dataint-datanasc idade Time differences in days [1] 30282 28760 24748 Agora preciso ter a idade de cada um em anos, com números inteiros. Alguém pode me ajudar? Obrigada Fátima

transforme em numeric e depois divida por 365.25. Manoel as.numeric(idade)/365.25 2013/2/12 Fátima Lima Paula <fatima.lima.paula@gmail.com>
Olá pessoal, como passar a diferença entre datas (idade) em dias para anos? Já havia feito isso em algum lugar, mas não encontro. datanasc=c(19250405,19300809,19400402) dataint=c(20080302,20090506,20080104) datanasc=as.character(datanasc,"%Y%m%d") dataint=as.character(dataint,"%Y%m%d") datanasc=as.Date(datanasc,"%Y%m%d") dataint=as.Date(dataint,"%Y%m%d") idade=dataint-datanasc idade Time differences in days [1] 30282 28760 24748
Agora preciso ter a idade de cada um em anos, com números inteiros. Alguém pode me ajudar? Obrigada Fátima
_______________________________________________ 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.
-- Manoel Galdino https://sites.google.com/site/galdinomcz/

Valeu, Manoel. Depois é só fazer idade=as.integer(idade), né? Obrigada Em 12 de fevereiro de 2013 19:22, Manoel Galdino <mcz.fea@gmail.com>escreveu:
transforme em numeric e depois divida por 365.25.
Manoel
as.numeric(idade)/365.25
2013/2/12 Fátima Lima Paula <fatima.lima.paula@gmail.com>
Olá pessoal, como passar a diferença entre datas (idade) em dias para anos? Já havia feito isso em algum lugar, mas não encontro. datanasc=c(19250405,19300809,19400402) dataint=c(20080302,20090506,20080104) datanasc=as.character(datanasc,"%Y%m%d") dataint=as.character(dataint,"%Y%m%d") datanasc=as.Date(datanasc,"%Y%m%d") dataint=as.Date(dataint,"%Y%m%d") idade=dataint-datanasc idade Time differences in days [1] 30282 28760 24748
Agora preciso ter a idade de cada um em anos, com números inteiros. Alguém pode me ajudar? Obrigada Fátima
_______________________________________________ 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.
-- Manoel Galdino https://sites.google.com/site/galdinomcz/
_______________________________________________ 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.

Dividir por 365.25 nem sempre da certo. Pra isso aconselho usar uma função (como a que mando abaixo, que achei na internet e não me recordo aonde) age_years <- function(first, second) { lt <- data.frame(first, second) age <- as.numeric(format(lt[,2],format="%Y")) - as.numeric(format(lt[,1],format="%Y")) first <- as.Date(paste(format(lt[,2],format="%Y"),"-",format(lt[,1],format="%m-%d"),sep="")) age[which(first > lt[,2])] <- age[which(first > lt[,2])] - 1 age } data1 <- as.Date('28/02/2010','%d/%m/%Y') data2 <- as.Date(c('28/02/2011','28/02/2012','28/02/2013','28/02/2014','28/02/2015'),'%d/%m/%Y') # Metodo 1 floor(as.numeric(data2 - data1)/365.25) # floor que arredonda para baixo, nao ceiling # Metodo 2 age_years(data1,data2) 2013/2/12 Fátima Lima Paula <fatima.lima.paula@gmail.com>
Valeu, Manoel. Depois é só fazer idade=as.integer(idade), né? Obrigada
Em 12 de fevereiro de 2013 19:22, Manoel Galdino <mcz.fea@gmail.com>escreveu:
transforme em numeric e depois divida por 365.25.
Manoel
as.numeric(idade)/365.25
2013/2/12 Fátima Lima Paula <fatima.lima.paula@gmail.com>
Olá pessoal, como passar a diferença entre datas (idade) em dias para anos? Já havia feito isso em algum lugar, mas não encontro. datanasc=c(19250405,19300809,19400402) dataint=c(20080302,20090506,20080104) datanasc=as.character(datanasc,"%Y%m%d") dataint=as.character(dataint,"%Y%m%d") datanasc=as.Date(datanasc,"%Y%m%d") dataint=as.Date(dataint,"%Y%m%d") idade=dataint-datanasc idade Time differences in days [1] 30282 28760 24748
Agora preciso ter a idade de cada um em anos, com números inteiros. Alguém pode me ajudar? Obrigada Fátima
_______________________________________________ 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.
-- Manoel Galdino https://sites.google.com/site/galdinomcz/
_______________________________________________ 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.
_______________________________________________ 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.

Ops, falha minha... Li errado o help da função floor (e ainda achei estranho que a tradução de floor é piso)... Sobre dividir por 365.25, sim, só funciona aproximadamente. Valeu pela função, mais precisa que minha sugestão... abç M 2013/2/13 Rodrigo Coster <rcoster@gmail.com>
Dividir por 365.25 nem sempre da certo. Pra isso aconselho usar uma função (como a que mando abaixo, que achei na internet e não me recordo aonde)
age_years <- function(first, second) { lt <- data.frame(first, second) age <- as.numeric(format(lt[,2],format="%Y")) - as.numeric(format(lt[,1],format="%Y")) first <- as.Date(paste(format(lt[,2],format="%Y"),"-",format(lt[,1],format="%m-%d"),sep="")) age[which(first > lt[,2])] <- age[which(first > lt[,2])] - 1 age }
data1 <- as.Date('28/02/2010','%d/%m/%Y') data2 <- as.Date(c('28/02/2011','28/02/2012','28/02/2013','28/02/2014','28/02/2015'),'%d/%m/%Y')
# Metodo 1 floor(as.numeric(data2 - data1)/365.25) # floor que arredonda para baixo, nao ceiling
# Metodo 2 age_years(data1,data2)
2013/2/12 Fátima Lima Paula <fatima.lima.paula@gmail.com>
Valeu, Manoel. Depois é só fazer idade=as.integer(idade), né? Obrigada
Em 12 de fevereiro de 2013 19:22, Manoel Galdino <mcz.fea@gmail.com>escreveu:
transforme em numeric e depois divida por 365.25.
Manoel
as.numeric(idade)/365.25
2013/2/12 Fátima Lima Paula <fatima.lima.paula@gmail.com>
Olá pessoal, como passar a diferença entre datas (idade) em dias para anos? Já havia feito isso em algum lugar, mas não encontro. datanasc=c(19250405,19300809,19400402) dataint=c(20080302,20090506,20080104) datanasc=as.character(datanasc,"%Y%m%d") dataint=as.character(dataint,"%Y%m%d") datanasc=as.Date(datanasc,"%Y%m%d") dataint=as.Date(dataint,"%Y%m%d") idade=dataint-datanasc idade Time differences in days [1] 30282 28760 24748
Agora preciso ter a idade de cada um em anos, com números inteiros. Alguém pode me ajudar? Obrigada Fátima
_______________________________________________ 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.
-- Manoel Galdino https://sites.google.com/site/galdinomcz/
_______________________________________________ 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.
_______________________________________________ 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.
_______________________________________________ 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.
-- Manoel Galdino https://sites.google.com/site/galdinomcz/

Obrigada, Rodrigo. Vou fazer depois por essa função e ver se vai retornar diferenças. Em 13 de fevereiro de 2013 13:41, Rodrigo Coster <rcoster@gmail.com>escreveu:
Dividir por 365.25 nem sempre da certo. Pra isso aconselho usar uma função (como a que mando abaixo, que achei na internet e não me recordo aonde)
age_years <- function(first, second) { lt <- data.frame(first, second) age <- as.numeric(format(lt[,2],format="%Y")) - as.numeric(format(lt[,1],format="%Y")) first <- as.Date(paste(format(lt[,2],format="%Y"),"-",format(lt[,1],format="%m-%d"),sep="")) age[which(first > lt[,2])] <- age[which(first > lt[,2])] - 1 age }
data1 <- as.Date('28/02/2010','%d/%m/%Y') data2 <- as.Date(c('28/02/2011','28/02/2012','28/02/2013','28/02/2014','28/02/2015'),'%d/%m/%Y')
# Metodo 1 floor(as.numeric(data2 - data1)/365.25) # floor que arredonda para baixo, nao ceiling
# Metodo 2 age_years(data1,data2)
2013/2/12 Fátima Lima Paula <fatima.lima.paula@gmail.com>
Valeu, Manoel. Depois é só fazer idade=as.integer(idade), né? Obrigada
Em 12 de fevereiro de 2013 19:22, Manoel Galdino <mcz.fea@gmail.com>escreveu:
transforme em numeric e depois divida por 365.25.
Manoel
as.numeric(idade)/365.25
2013/2/12 Fátima Lima Paula <fatima.lima.paula@gmail.com>
Olá pessoal, como passar a diferença entre datas (idade) em dias para anos? Já havia feito isso em algum lugar, mas não encontro. datanasc=c(19250405,19300809,19400402) dataint=c(20080302,20090506,20080104) datanasc=as.character(datanasc,"%Y%m%d") dataint=as.character(dataint,"%Y%m%d") datanasc=as.Date(datanasc,"%Y%m%d") dataint=as.Date(dataint,"%Y%m%d") idade=dataint-datanasc idade Time differences in days [1] 30282 28760 24748
Agora preciso ter a idade de cada um em anos, com números inteiros. Alguém pode me ajudar? Obrigada Fátima
_______________________________________________ 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.
-- Manoel Galdino https://sites.google.com/site/galdinomcz/
_______________________________________________ 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.
_______________________________________________ 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.
_______________________________________________ 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.

A diferença é que tem ano que tem 365 dias e tem ano que tem 366 dias. Minha sugestão aproxima isso pelo fato de que a cada tqatro anos, em média os anos têm 365.25 dias. Assim, só vai dar alguma diferença se a idade em dias for um múltiplo de 365... abç M 2013/2/13 Fátima Lima Paula <fatima.lima.paula@gmail.com>
Obrigada, Rodrigo. Vou fazer depois por essa função e ver se vai retornar diferenças.
Em 13 de fevereiro de 2013 13:41, Rodrigo Coster <rcoster@gmail.com>escreveu:
Dividir por 365.25 nem sempre da certo. Pra isso aconselho usar uma função
(como a que mando abaixo, que achei na internet e não me recordo aonde)
age_years <- function(first, second) { lt <- data.frame(first, second) age <- as.numeric(format(lt[,2],format="%Y")) - as.numeric(format(lt[,1],format="%Y")) first <- as.Date(paste(format(lt[,2],format="%Y"),"-",format(lt[,1],format="%m-%d"),sep="")) age[which(first > lt[,2])] <- age[which(first > lt[,2])] - 1 age }
data1 <- as.Date('28/02/2010','%d/%m/%Y') data2 <- as.Date(c('28/02/2011','28/02/2012','28/02/2013','28/02/2014','28/02/2015'),'%d/%m/%Y')
# Metodo 1 floor(as.numeric(data2 - data1)/365.25) # floor que arredonda para baixo, nao ceiling
# Metodo 2 age_years(data1,data2)
2013/2/12 Fátima Lima Paula <fatima.lima.paula@gmail.com>
Valeu, Manoel. Depois é só fazer idade=as.integer(idade), né? Obrigada
Em 12 de fevereiro de 2013 19:22, Manoel Galdino <mcz.fea@gmail.com>escreveu:
transforme em numeric e depois divida por 365.25.
Manoel
as.numeric(idade)/365.25
2013/2/12 Fátima Lima Paula <fatima.lima.paula@gmail.com>
Olá pessoal, como passar a diferença entre datas (idade) em dias para anos? Já havia feito isso em algum lugar, mas não encontro. datanasc=c(19250405,19300809,19400402) dataint=c(20080302,20090506,20080104) datanasc=as.character(datanasc,"%Y%m%d") dataint=as.character(dataint,"%Y%m%d") datanasc=as.Date(datanasc,"%Y%m%d") dataint=as.Date(dataint,"%Y%m%d") idade=dataint-datanasc idade Time differences in days [1] 30282 28760 24748
Agora preciso ter a idade de cada um em anos, com números inteiros. Alguém pode me ajudar? Obrigada Fátima
_______________________________________________ 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.
-- Manoel Galdino https://sites.google.com/site/galdinomcz/
_______________________________________________ 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.
_______________________________________________ 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.
_______________________________________________ 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.
_______________________________________________ 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.
-- Manoel Galdino https://sites.google.com/site/galdinomcz/

depois use round, ou floor ou ceiling, dependendo de como quer arredondar os números (normalmente seria ceiling, pois arredonda sempre pra baixo). sds M 2013/2/12 Fátima Lima Paula <fatima.lima.paula@gmail.com>
Olá pessoal, como passar a diferença entre datas (idade) em dias para anos? Já havia feito isso em algum lugar, mas não encontro. datanasc=c(19250405,19300809,19400402) dataint=c(20080302,20090506,20080104) datanasc=as.character(datanasc,"%Y%m%d") dataint=as.character(dataint,"%Y%m%d") datanasc=as.Date(datanasc,"%Y%m%d") dataint=as.Date(dataint,"%Y%m%d") idade=dataint-datanasc idade Time differences in days [1] 30282 28760 24748
Agora preciso ter a idade de cada um em anos, com números inteiros. Alguém pode me ajudar? Obrigada Fátima
_______________________________________________ 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.
-- Manoel Galdino https://sites.google.com/site/galdinomcz/
participantes (3)
-
Fátima Lima Paula
-
Manoel Galdino
-
Rodrigo Coster