【问题标题】:Setting the vector as month year tsibble将向量设置为月年 tsibble
【发布时间】:2020-03-06 13:55:30
【问题描述】:

我正在努力将简单的月份年份格式转换为 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

有没有人可以帮我找到路?

【问题讨论】:

  • 试试as.Date(dt$a, origin = "1901-01-01")
  • 12014 是指origin 之后的第 12000 天,还是 “2014 年第 1 个月”
  • @akrun 它没有给我正确的结果。例如,我应该有 2014 年 1 月、2014 年 2 月等。但我有 [1] "1933-11-23" "1961-04-10"。
  • 它基于您显示1901的年份
  • @r2evans No. 表示 2014 年的第 1 个月,即 2014 年 1 月

标签: r date datetime tidyverse


【解决方案1】:

我们可以在开头填充 0,用 as.yearmon 转换为 yearmon 并用 as.Date 将其强制转换为 '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 时,请确保删除重复的日期

【讨论】:

  • 这行得通。但是,我的数据是月末数据。所以我想从日期中省略一天。我添加了另一列将其转换为tssible,因为我想避免重复错误。
  • @JontroPothon 您可以使用dt[!duplicated(dt$a),] 删除重复项
  • 我正在尝试使用 fable 进行一步预测,它会生成 1 天的预测而不是 1 个月的预测。有没有什么方法可以让我不用几天就拥有它?像这样的东西应该可以工作,time &lt;- rep(yearmonth("2014 Jan") + 0:59, times = 218)
  • @JontroPothon 你能用一个可重复的例子发布一个新问题吗
猜你喜欢
  • 1970-01-01
  • 2015-05-11
  • 2020-04-30
  • 2020-05-22
  • 1970-01-01
  • 2019-07-19
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多