【问题标题】:Use dygraph for R to plot xts time series by year only?使用 dygraph for R 仅按年份绘制 xts 时间序列?
【发布时间】:2015-04-03 01:03:39
【问题描述】:

我正在尝试使用 R 库的新 dygraphs 来绘制波士顿马拉松每年的男女获胜时间。我有一个以秒为单位的获胜次数的数据框,这是其中的一部分:

winners <- data.frame(year=1966:1971, mensec=c(8231, 8145, 8537, 8029, 7830, 8325), womensec=c(12100, 12437, 12600, 12166, 11107, 11310))

但我不知道如何从中创建 xts 对象。我可以从每一列创建一个规则的时间序列,并使用 dygraph 在单独的图表中绘制每个图表

men <- ts(winners$mensec, frequency = 1, start=winners$year[1])
dygraph(men)
women <- ts(winners$womensec, frequency = 1, start=winners$year[1])
dygraph(women)

如果我尝试 cbind 时间序列,它将无法在 dygraph 中工作

both <- cbind(men, women)
dygraph(both)

错误信息是

xts(x.mat, order.by = order.by, frequency = frequency(x), ...) 中的错误: NROW(x) 必须匹配长度(order.by)

有什么建议吗?谢谢

【问题讨论】:

    标签: r xts


    【解决方案1】:

    这看起来像是as.xts.ts 中的一个错误。它使用length(x) 为索引创建日期序列,该索引返回矩阵的元素数(而不是行数)。

    您可以通过在您的 ts 对象上使用 as.xts 来解决此问题,然后再对它们调用 cbind

    both <- cbind(men=as.xts(men), women=as.xts(women))
    

    【讨论】:

    • 很高兴知道。不要以为我以前从未遇到过这种情况。
    【解决方案2】:

    看起来约书亚回答了这个问题。这是完整的答案,代码略有不同,还有年份 x 轴格式化程序。

    library(xts)
    library(dygraphs)
    
    winners <- data.frame(
      year=1966:1971
      , mensec=c(8231, 8145, 8537, 8029, 7830, 8325)
      , womensec=c(12100, 12437, 12600, 12166, 11107, 11310)
    )
    
    winners_xts <- as.xts(
      winners[-1]
      , order.by = as.Date(
        paste0(winners$year,"-01-01",format="%Y-01-01")
      )
    )
    
    dygraph( winners_xts ) %>%
      dyAxis( 
        name="x"
        ,axisLabelFormatter = "function(d){ return d.getFullYear() }"
      )
    
    # using the original data here is a way to merge
    #   merge will work just like cbind
    #   but need to convert to xts first
    men <- ts(winners$mensec, frequency = 1, start=winners$year[1])
    women <- ts(winners$womensec, frequency = 1, start=winners$year[1])
    do.call(merge,Map(as.xts,list(men=men,women=women)))
    

    【讨论】:

      猜你喜欢
      • 2018-06-30
      • 2020-11-25
      • 2021-03-14
      • 2019-04-01
      • 2017-10-20
      • 2021-10-24
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      相关资源
      最近更新 更多