如何将 tsibble 导出到 Excel,将时间索引保留为字符格式,例如“2014 Q4”而不是数字

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

我的最终用户想要一个 Excel 工作簿,其中包含格式为 YYYY Qx 的时间序列索引,例如1998 年第一季度,但无论我以何种方式导出季度时间序列 tsibble 以实现卓越,索引列最终总是一个数字 - 我认为该数字代表从 1970 年 1 月 1 日起的天数。我想找到一种方法来做到这一点。

我在 https://robjhyndman.com/hyndsight/ts2csv/ 上查看了 Rob Hyndman 的函数,将 tsibble 写入 csv,效果很好(不确定 Rob 是否仍然检查他的页面 - 但不会是我在这里问过的以避免加倍)。下面是对 csv 的写入,效果很好,并且索引具有“1998 Q1”样式格式。

library(fpp2)
readr::write_csv(tsibble::as_tsibble(visnights), "visnights.csv")

但是我找不到导出到excel时保留时间索引格式的导出方法。 如果我使用类似下面的代码,索引列中的第一个数据元素是一个数字 - 10227 - 而不是 1998 Q1

library(writexl)
write_xlsx(tsibble::as_tsibble(visnights), path = "visnights.xlsx", col_names = TRUE)

再一个例子 - 使用pivot_longer = FALSE

library(tsibble)
library(writexl)
z <- ts(matrix(rnorm(300), 100, 3), start = c(1961, 1), frequency = 12)
exp <- as_tsibble(z, pivot_longer = FALSE)
write_xlsx(exp, path = "exp.xlsx", col_names = TRUE)
r date time-series export tsibble
1个回答
0
投票

您可以将其转换为 tibble(而不是 tsibble),因为这允许您使用 dplyr 中的

mutate()
将索引列转换为字符:

library(tsibble)
library(writexl)
z <- ts(matrix(rnorm(300), 100, 3), start = c(1961, 1), frequency = 12)
exp_z <- as_tsibble(z, pivot_longer = FALSE) %>% 
  as_tibble() %>% 
  dplyr::mutate(index = as.character(index))
write_xlsx(exp_z, path = "exp.xlsx", col_names = TRUE)

请注意,我在这里重命名了您的变量,因为创建与函数同名的变量是不好的做法。

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