我的最终用户想要一个 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)
您可以将其转换为 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)
请注意,我在这里重命名了您的变量,因为创建与函数同名的变量是不好的做法。