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

pnwntuvh  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(92)

我的最终用户想要一个Excel工作簿,其中包括YYYY Qx的时间序列索引,例如1998年第一季度,但无论我如何导出我的季度时间序列tsibble到excel,索引列最终总是一个数字-我认为这个数字代表从1970年1月1日开始的天数。我想找到一种方法来做到这一点。
我查看了Rob Hyndman在https://robjhyndman.com/hyndsight/ts2csv/上的函数,将一个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)
64jmpszr

64jmpszr1#

您可以将其转换为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)

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

相关问题