重新配置 tsibble 中的键(fpp3 包)

问题描述 投票:0回答:1

我正在使用 R 中的 fpp3 包处理存储在 tsibble 对象中的时间序列数据。

数据具有基于某些列定义的多个键。

library(fpp3)
PBS
key(PBS)

但是,我只需要选择列的子集进行某些分析/可视化。问题是,选择列后,即使不再包含这些列,tsibble 仍然保留原始键。

> PBS |>
+   select(Month, ATC1, Cost) 
# A tsibble: 67,596 x 6 [1M]
# Key:       Concession, Type, ATC1, ATC2 [336]
      Month ATC1   Cost Concession   Type        ATC2 
      <mth> <chr> <dbl> <chr>        <chr>       <chr>
 1 1991 jul A     67877 Concessional Co-payments A01  
 2 1991 ago A     57011 Concessional Co-payments A01  
 3 1991 set A     55020 Concessional Co-payments A01  
 4 1991 out A     57222 Concessional Co-payments A01  
 5 1991 nov A     52120 Concessional Co-payments A01  
 6 1991 dez A     54299 Concessional Co-payments A01  
 7 1992 jan A     39753 Concessional Co-payments A01  
 8 1992 fev A     54405 Concessional Co-payments A01  
 9 1992 mar A     61108 Concessional Co-payments A01  
10 1992 abr A     65356 Concessional Co-payments A01  
# ℹ 67,586 more rows
# ℹ Use `print(n = ...)` to see more rows

有没有办法使用 fpp3 包中的函数在 tsibble 上执行列选择操作后重新定义键?我检查了文档,但没有看到任何提及修改转换后密钥的内容。

救命!

r tsibble
1个回答
0
投票

使用

select()
删除关键列将产生无效的 tsibble,除非这些关键列是多余的。在这种情况下,删除
ATC2
Concession
Type
后,同一时间序列将出现重复的时间点。您可能想用以下方法计算每个
ATC1
的总成本:

library(fpp3)
#> -- Attaching packages ---------------------------------------------- fpp3 0.5 --
#> v tibble      3.2.1          v tsibble     1.1.4     
#> v dplyr       1.1.4          v tsibbledata 0.4.1     
#> v tidyr       1.3.1          v feasts      0.3.2     
#> v lubridate   1.9.3          v fable       0.3.3.9000
#> v ggplot2     3.5.0          v fabletools  0.4.1
#> -- Conflicts ------------------------------------------------- fpp3_conflicts --
#> x lubridate::date()    masks base::date()
#> x dplyr::filter()      masks stats::filter()
#> x tsibble::intersect() masks base::intersect()
#> x tsibble::interval()  masks lubridate::interval()
#> x dplyr::lag()         masks stats::lag()
#> x tsibble::setdiff()   masks base::setdiff()
#> x tsibble::union()     masks base::union()
PBS |> 
  group_by(ATC1) |> 
  summarise(Cost = sum(Cost))
#> # A tsibble: 3,060 x 3 [1M]
#> # Key:       ATC1 [15]
#>    ATC1     Month     Cost
#>    <chr>    <mth>    <dbl>
#>  1 A     1991 Jul 13617917
#>  2 A     1991 Aug 12376201
#>  3 A     1991 Sep 12773459
#>  4 A     1991 Oct 14082325
#>  5 A     1991 Nov 13792933
#>  6 A     1991 Dec 16477982
#>  7 A     1992 Jan 18988760
#>  8 A     1992 Feb 11633278
#>  9 A     1992 Mar 12752540
#> 10 A     1992 Apr 13937039
#> # i 3,050 more rows

创建于 2024-04-28,使用 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.