【问题标题】:Converting a ts (Time Series) object to a Vector in R将 ts(时间序列)对象转换为 R 中的向量
【发布时间】:2011-02-04 08:01:15
【问题描述】:

我需要在不带 ts 对象的向量上使用函数。我正在尝试将其转换为普通的旧向量,但我似乎无法弄清楚。我四处搜索,但大多数人都试图将数据类型转换为 ts 对象。我想走另一条路。任何帮助,将不胜感激。

【问题讨论】:

    标签: data-structures r time-series


    【解决方案1】:
    data(AirPassengers)   # already in your R installation, via package "datasets"
    AP = AirPassengers    
    class(AP)
    # returns "ts"
    
    AP1 = as.numeric(AP)
    # returns "numeric"
    
    # another way to do it
    AP1 = unclass(AP)
    

    AP1 是一个与 AP 具有 相同 和长度的向量。该类现在是数字而不是 ts,这部分意味着索引不再是某种日期时间对象,而只是普通的顺序整数。

    因此,对于 OP 中的具体问题,上述两个 sn-ps 中的任何一个都会“将 [a ts object] 转换为普通的旧向量

    如果您需要对 indices 做同样的事情,而不是值,或者除值之外 - 即,从 Date 对象到数字,您可以这样做:

    fnx = function(num_days_since_origin, origin="1970-01-01") {
      as.Date(num_days_since_origin, origin="1970-01-01")
    }
    
    a = as.Date("1985-06-11")
    a2 = as.numeric(a)
    # returns: 5640
    a3 = fnx(5640)
    # returns: "1985-06-11" (a date object)
    

    【讨论】:

    • +1 我喜欢 unclass。这是在 R 中检查对象内容的好方法。
    • 认真的吗? as.numeric(AirPassengers) 返回该日期的采样值,而不是日期本身。请演示如何从数据中获取自纪元以来的秒数!
    猜你喜欢
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    • 2021-09-01
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多