Устанавливая вектор как месяц год циббл - PullRequest
1 голос
/ 10 ноября 2019

Я борюсь с тем, чтобы преобразовать простой формат месяца-месяца в tsibble. У меня есть этот набор данных,

a <- c(12014, 22014, 32014, 42014, 52014, 62014, 72014, 82014, 92014, 102014, 112014, 122014, 
       12015, 22015, 32015, 42015, 52015, 62015, 72015, 82015, 92015, 102015, 112015, 122015,
       12014, 22014, 32014, 42014, 52014, 62014, 72014, 82014, 122014)
b <- rnorm(33, mean = 12, sd = 8)

dt <- data.frame(a, b)

Здесь вектор a должен быть переменной времени. Это не обязательно непрерывно. Это означает, что возможно, что у меня есть скрытое пропущенное значение.

as.Date(dt$a, origin = "01-1901")
library(tidyverse)
as_tsibble(dt)

Я понял, что сначала мне нужно преобразовать данные в «as.Date», а затем преобразовать данные в tsibble.

Я получаю следующее сообщение об ошибке

> as.Date(dt$a, origin = "01-1901")
Error in charToDate(x) : 
  character string is not in a standard unambiguous format

Есть ли кто-нибудь, кто может помочь мне найти выход?

1 Ответ

1 голос
/ 10 ноября 2019

Мы можем заполнить 0 в начале, преобразовать в yearmon с помощью as.yearmon и привести его к классу 'Date' с помощью as.Date

library(zoo)
dt$a <- as.Date(as.yearmon(sprintf("%06d", dt$a), "%m%Y"))
dt$a
#[1] "2014-01-01" "2014-02-01" "2014-03-01" "2014-04-01" "2014-05-01" "2014-06-01" "2014-07-01" "2014-08-01" "2014-09-01" "2014-10-01" "2014-11-01"
#[12] "2014-12-01" "2015-01-01" "2015-02-01" "2015-03-01" "2015-04-01" "2015-05-01" "2015-06-01" "2015-07-01" "2015-08-01" "2015-09-01" "2015-10-01"
#[23] "2015-11-01" "2015-12-01" "2014-01-01" "2014-02-01" "2014-03-01" "2014-04-01" "2014-05-01" "2014-06-01" "2014-07-01" "2014-08-01" "2014-12-01"

ПРИМЕЧАНИЕ: когда мы преобразуем в tsibble, сделайтеуверен, что повторяющиеся даты удалены

...