O detalhe complicado sobre meses
O que ymd("2018-01-31") + months(1) deve retornar? Deve ser 30, 31 ou 28 dias no futuro? Faça o teste. Em geral, o lubridate retorna o mesmo dia do mês no mês seguinte, mas como 31 de fevereiro não existe, o lubridate retorna um valor ausente, NA.
Existem operadores alternativos de adição e subtração: %m+% e %m-%, que têm comportamento diferente. Em vez de retornar NA para uma data inexistente, eles voltam para a última data existente.
Você vai explorar esse comportamento tentando gerar uma sequência com o último dia de cada mês deste ano.
Este exercício faz parte do curso
Trabalhando com datas e horários no R
Instruções do exercício
Colocamos jan_31, a data de 31 de janeiro deste ano, no seu workspace.
- Comece criando uma sequência de 1 a 12 períodos de 1 mês.
- Some
month_seqajan_31. Perceba o que acontece em qualquer mês em que o dia 31 não existe - Agora some
month_seqajan_31usando o operador%m+%. - Tente subtrair
month_seqdejan_31usando o operador%m-%.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# A sequence of 1 to 12 periods of 1 month
month_seq <- ___
# Add 1 to 12 months to jan_31
___ + ___
# Replace + with %m+%
___ ___ ___
# Replace + with %m-%
___ ___ ___