【问题标题】:How to transform an as_tibble() format time series data into an as_tsibble() format in R?如何将 as_tibble() 格式的时间序列数据转换为 R 中的 as_tsibble() 格式?
【发布时间】:2020-09-06 18:26:54
【问题描述】:

到目前为止,我得到的结果如下,这是一个“tibble”格式。

但是,由于这是一组时间序列,我希望将此结果 x 转换为 'tsibble' 格式的后记。

有人知道我还需要做什么吗?

我尝试过使用

x <- function_name(n.ts = 3, freq = 12, nComp = 2, n = 120,output_format = "list")
as_tsibble(x)

错误说

另一个尝试和错误 内容应显示类似于此的内容

【问题讨论】:

  • 感谢您的帮助!这也是我担心的事情。如果我直接使用 as_tsibble() ,错误说“as_tsibble() 还不知道如何处理列表类”。这就是我希望首先转换为“tibble”格式的原因。
  • 根据显示的图像,您似乎在每个 list 列中都有 ts 对象。我在下面展示了一个解决方案代码(没有经过dput 的小型可重复示例进行测试)
  • 在创建的数据集中,没有“年份”信息。因此,转换为 tsibble 后,年份的索引从 0001 开始

标签: r package cran tsibble


【解决方案1】:

“x”是一个list,包含多个组件。我们可以用map循环list,提取'x'组件并将其转换为tsibble

library(dplyr)
library(purrr)
x1 <- map(x,  ~ as_tsibble(.x$x))
x1
#$N1
# A tsibble: 120 x 2 [1M]
#      index value
#      <mth> <dbl>
# 1 0001 Jan  186.
# 2 0001 Feb  184.
# 3 0001 Mar  189.
# 4 0001 Apr  188.
# 5 0001 May  193.
# 6 0001 Jun  189.
# 7 0001 Jul  192.
# 8 0001 Aug  194.
# 9 0001 Sep  194.
#10 0001 Oct  196.
# … with 110 more rows

#$N2
# A tsibble: 120 x 2 [1M]
#      index value
#      <mth> <dbl>
# 1 0001 Jan  18.4
# 2 0001 Feb  16.0
# 3 0001 Mar  16.9
# ...

这里,索引部分是由列名('Month')创建的,由于没有关于'year'的信息,它以'0001'开头

数据

library(gratis)
x <- generate_ts(n.ts = 3, freq = 12, nComp = 2, n = 120)

【讨论】:

  • 感谢您的帮助。更新中显示的新错误
  • @ScarlettZhao。你能用dput 的一个小例子更新你的帖子,以便我可以测试它
  • 当然,这就是我正在使用的功能。 x &lt;- generate_ts(n.ts = 3, freq = 12, nComp = 2, n = 120)
  • @ScarlettZhao 你从哪个包中得到generate_ts
  • @ScarlettZhao 它是一个 lambda 函数,这里是 function(x) x ~function(.x) 的简写形式
猜你喜欢
  • 2014-09-13
  • 1970-01-01
  • 1970-01-01
  • 2018-11-05
  • 1970-01-01
  • 2017-12-27
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
相关资源
最近更新 更多