[R-br] Diferença entre datas

Karina Rebuli karina.rebuli em gmail.com
Quinta Dezembro 22 15:31:23 BRST 2016


Olá, Leonard.

Sei duas formas de fazer isso.

=====
* Com os funções-base do R:
sapply( sapply( as.Date( c("2011-01-17", "2009-11-21") ), seq, Sys.Date(),
by = "month" ), length )

Importante ressaltar que desssa forma se o dia das datas a serem
comparadasfor maior que o dia da data atual, ele vai retornar um mês a mais
(pois a seq() vai começar com a data passada e isso já é um retorno a ser
contabilizado na length().

====
* Com funções do lubridate (acho o pacote excelente e uso bastante, é de
autoria do Hadley):
sapply( c("2011-01-17", "2009-11-21"), function(day0){
  p <- as.period( interval( ymd( day0 ), Sys.Date() ) )
  year(p)*12 + month(p)
})

Dessa forma não precisa se preocupar com o dia inicial e você ainda pode
acrescentar o day(p)/30 ao retorno se quiser a fração do resultado em meses.

Abs,
Karina



On Thu, Dec 22, 2016 at 3:03 PM Leonard Mendonça de Assis via R-br <
r-br em listas.c3sl.ufpr.br> wrote:

> Boa tarde
>
>
>
> Imagine o seguinte cmr:
>
>
>
> as.Date(c("2011-01-17", "2009-11-21"))-Sys.Date()
>
> Time differences in days
>
> [1] -2166 -2588
>
> >
>
> Como eu conseguiria obter este resultado, não em dias, mas em meses?
>
>
>
> Leonard
> _______________________________________________
> 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/20161222/433764f4/attachment.html>


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