31 agosto, 2021

Selo DC

Informações iniciais sobre datas

  • Você sabia que nem sempre o ano tem 365 dias?
  • Você sabia que nem sempre um dia tem 24h?
  • Você sabia que nem sempre 1min tem 60seg.?

Por quê?

  • Fenômenos de rotação e translação da terra

Oustros problemas que envolve esse tipo de dado:

  • horários de verão
  • etc.

Como manipular esse tipo de dados?

  • Objeto de classe "Date"
  • Como esse é um objeto da base R, muitos genéricos estão prontos esse tipo de dado;
  • Como saber a data de hoje? Sys.Date()
  • O resultado de Sys.Date() é um objeto de classe "Date"

Vejamos algumas características desse tipo de objeto

# Qual a data de hoje?
hoje <- Sys.Date(); hoje
## [1] "2021-08-31"
# Qual o tipo de objeto?
typeof(hoje)
## [1] "double"
# Eh um vetor?
is.vector(hoje)
## [1] FALSE
# Eh 'double'?
is.vector(hoje, mode = "double")
## [1] FALSE
# Qual a sua classe?
class(hoje)
## [1] "Date"

Vejamos algumas características desse tipo de objeto

# Eh um vetor?
is.vector(unclass(hoje))
## [1] TRUE
# Eh 'double'?
is.vector(unclass(hoje), mode = "double")
## [1] TRUE
# Qual a sua classe?
class(hoje)
## [1] "Date"
# Imprimindo hoje sem classe
unclass(hoje)
## [1] 18870

Como criamos esse objeto?

# Objeto x tipo "character"
x <- "2017-08-02"
(data <- as.Date(x))
## [1] "2017-08-02"
class(data)
## [1] "Date"
# Objeto x tipo "numeric"
x <- 10
# Com o objeto numerico, precisamos informar
# a data inicial no argumento 'origin'. Nesse
# caso, o retorno sera a data x dias apos 
# 'origin'
# 
(data <- as.Date(x, origin = "2017-08-02")) 
## [1] "2017-08-12"
# Objeto de classe 'POSIXct'
x <- as.POSIXct("2018-08-02 5:30")
(data <- as.Date(x))
## [1] "2018-08-02"
class(data)
## [1] "Date"

Podemos formatar esse objeto?

# Dia de hoje
Sys.time()
## [1] "2021-08-31 21:13:57 -03"
# Formatando
format(Sys.time(), "%d/%m/%Y")
## [1] "31/08/2021"
format(Sys.time(), "%d de %B de %Y")
## [1] "31 de agosto de 2021"

Algumas manipulações

# Hoje
Sys.Date()
## [1] "2021-08-31"
# Data daqui a 10 dias
(x <- Sys.Date() + 10)
## [1] "2021-09-10"
# Da ha 10 dias
(y <- Sys.Date() - 20 )
## [1] "2021-08-11"
# Diferença
x - y
## Time difference of 30 days
# x eh igual a y?
x == y
## [1] FALSE

Bons estudos!