【问题标题】:format input to ts object in R格式化输入到 R 中的 ts 对象
【发布时间】:2020-02-25 11:55:03
【问题描述】:

我有一些数据,其中包含以 week.year 表示的时间列以及在该周测量的相应单位。

    Week-Year             Units
    01.2020             39.12727273
    02.2020             33.34545455
    03.2020             118.7181818
    04.2020             83.71818182
    05.2020             58.56985
    .                    .
    52.2020             89.54651534

我必须创建一个 ts 对象,它将这些 Week-Year 值作为输入。 需要此步骤的原因是 - 有时某些周内缺少值,因此使用自动生成的时间刻度(开始 =,结束 =,频率 =)会弄乱读数。 有没有办法实现它?或者有什么办法可以适应这种情况? R新手在这里,非常感谢一些指导。 :)

【问题讨论】:

    标签: r time-series


    【解决方案1】:

    假设输入是数据框DF在最后的注释中可重复显示,将其转换为动物园对象,然后使用as.ts创建频率为52的ts系列。

    library(zoo)
    
    week <- as.integer(DF[[1]])
    year <- as.numeric(sub("...", "", DF[[1]]))
    z <- zoo(DF[[2]], year + (week - 1) / 52)
    tt <- as.ts(z)
    
    tt
    ## Time Series:
    ## Start = c(2020, 1) 
    ## End = c(2020, 52) 
    ## Frequency = 52 
    ##  [1]  39.12727  33.34545 118.71818  83.71818  58.56985        NA        NA
    ##  [8]        NA        NA        NA        NA        NA        NA        NA
    ## [15]        NA        NA        NA        NA        NA        NA        NA
    ## [22]        NA        NA        NA        NA        NA        NA        NA
    ## [29]        NA        NA        NA        NA        NA        NA        NA
    ## [36]        NA        NA        NA        NA        NA        NA        NA
    ## [43]        NA        NA        NA        NA        NA        NA        NA
    ## [50]        NA        NA  89.54652
    
    frequency(tt)
    ## [1] 52
    
    class(tt)
    ## [1] "ts"
    

    注意

    Lines <- "    Week-Year             Units
        01.2020             39.12727273
        02.2020             33.34545455
        03.2020             118.7181818
        04.2020             83.71818182
        05.2020             58.56985
        52.2020             89.54651534"
    DF <- read.table(text = Lines, header = TRUE, colClasses = c("character", NA))
    

    【讨论】:

    • 输入实际上是一个数据框。谢谢:)它有效:)
    • 由于我的数据集已更改,因此面临后续错误。我现在正在处理数据帧列表并需要创建一个 ts obj 列表,以便每个 ts obj 对应一个数据帧(即第一个 ts obj对于第一个数据框等。)我尝试调整上面提供的解决方案: tt
    • 需要一个可重现的例子。
    • 嘿,我知道我的问题是什么-对于那些 CAL.YEAR 不是从第一周开始的数据帧,即 1.xxxx 它给出了周期性错误。我认为需要调整的是这个-“年+(周-1)/52)”。你能解释一下这背后的逻辑吗?
    猜你喜欢
    • 2021-02-11
    • 2016-10-07
    • 2023-03-14
    • 2012-10-15
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 2016-06-29
    • 2021-08-16
    相关资源
    最近更新 更多