【问题标题】:dateFormat in as.xts functionas.xts 函数中的 dateFormat
【发布时间】:2020-02-17 04:17:30
【问题描述】:

我想将 R 中的数据集“co2”转换为 CSV。 我的代码如下:

require(xts)
require(zoo)
co2_xts <- as.xts(co2)
write.zoo(co2_xts, file="demo.csv",sep=",")

这很好用。但是时间索引显示为例如“ene. 1959”(它是西班牙语)。如果可能,我希望索引采用“%B %Y”格式。如果我使用:

co2_xts <- as.xts(co2,dateFormat="%B %Y")

这会引发错误:

Error in `as.%B %Y`(c(1959, 1959.08333333334, 1959.16666666668, 1959.25000000002,  : 
could not find function "as.%B %Y"

那么我怎样才能实现我想要的呢?

【问题讨论】:

    标签: r xts zoo


    【解决方案1】:

    您可以在使用indexFormat 函数创建xts 后调整索引格式。

    在这种情况下:

    indexFormat(co2_xts) <- "%B %Y" 
    

    请注意,这只会更改显示格式。

    【讨论】:

    • 谢谢,这很好用。但是,当我使用 %B 或 %b 时,结果是相同的,它显示为“Jan 1959”而不是“January 1959”。为什么会发生这种情况?
    • 这只会格式化显示,而不是基础值,它们保持不变。因此,当您将其导出到 csv 时,它将导出为 1959 年 1 月。您可能希望使用 indexClass(co2_xts)
    【解决方案2】:

    你有没有想过timetk包和保存tibble?

    require(timetk)
    co2_tbl <- tk_tbl(co2, start = start(co2), freq = 12)
    

    然后使用更通用的 write.csv 或更快的方法之一,例如fread::write_csv 如果是长文件:

    write.csv(co2_tbl, file="demo.csv", row.names=FALSE)
    

    【讨论】:

      猜你喜欢
      • 2020-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-07
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多