我正在使用 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 上执行列选择操作后重新定义键?我检查了文档,但没有看到任何提及修改转换后密钥的内容。
救命!
使用
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