
Veja a função difftime{base} acho que ela te ajudará Em 22/12/2016 4:48 PM, "Karina Rebuli via R-br" <r-br@listas.c3sl.ufpr.br> escreveu:
Muito bem observado, Jonatan, obrigada :)
On Thu, Dec 22, 2016 at 4:36 PM Leonard Mendonça de Assis via R-br < r-br@listas.c3sl.ufpr.br> wrote:
Era esse detalhe que eu estava tentando entender, eu tinha uma função em SQL para calcular esta diferença. Sabia também que o R tinha algumas coisas prontas, mas estava apanhando nos detalhes justamente citados no help do lubridate, quando as diferenças são próximas a um mês em meses como fevereiro, por exemplo.
Estava conseguindo somar meses, dias, etc, mas obter a diferença em meses, eu não havia compreendido ainda. O máximo que cheguei perto tinha sido com a função difftime, onde consegui a diferença em semanas.
A ajuda de vocês foi escencial, acho que agora o treco aqui sai do lugar
Leonard
*De:* R-br [mailto:r-br-bounces@listas.c3sl.ufpr.br] *Em nome de *Jônatan via R-br *Enviada em:* quinta-feira, 22 de dezembro de 2016 16:24 *Para:* Karina Rebuli <karina.rebuli@gmail.com>; a lista Brasileira oficial de discussão do programa R. <r-br@listas.c3sl.ufpr.br> *Assunto:* Re: [R-br] Diferença entre datas
Só para constar,
as funções do lubridate já são vetorizadas então não precisa do sapply:
library(lubridate)
dates <- c("2011-01-17", "2009-11-21") p <- as.period( interval( ymd(dates), Sys.Date() ) )
year(p)*12 + month(p)
2016-12-22 15:31 GMT-02:00 Karina Rebuli via R-br < r-br@listas.c3sl.ufpr.br>:
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@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@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.
--
############################################################### ## Jônatan Dupont Tatsch
## Professor do Departamento de Física
## Centro de Ciências Exatas e Naturais (CCNE)
## Universidade Federal de Santa Maria - UFSM
## Faixa de Camobi, Prédio 13 - Campus UFSM - Santa Maria, RS, Brasil - 97105-900
## Telefone: +55(55)33012083 <(55)%203301-2083>
## www.ufsm.br/meteorologia
############################################################### _______________________________________________ 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.