【问题标题】:R: reading csv files from a directory with zoo returns logical instead of time seriesR:从带有动物园的目录中读取csv文件返回逻辑而不是时间序列
【发布时间】:2017-08-15 01:24:05
【问题描述】:

我在一个文件夹中有两个csv 文件。我的文件如下所示:

file1.csv   file2.csv
1           10
2           20
3           30
4           40
5           50
6           60
7           70

我需要阅读这些csv 并将它们转换为时间序列ts 以便与stl 进行进一步分析。我的尝试:

dir<-"C:\\Users\\MyName\\Desktop\\MyFolder"
setwd(dir)

library(zoo)

listcsv<-dir(pattern="*.csv")
z1 <- read.zoo(file = listcsv[1], sep = ",", header = FALSE)
z2 <- read.zoo(file = listcsv[2], sep = ",", header = FALSE)

返回两个类型为 logical 而不是 ts 的元素:

> typeof(z1)
[1] "logical"
> typeof(z2)
[1] "logical"

我做错了什么?

【问题讨论】:

    标签: r csv stl time-series directory


    【解决方案1】:

    typeof 将返回您的 ts 中原子向量的数据类型。要检查它是否为ts,请使用class。这是一个可重现的示例

    # arbitrary time series
    temp <- ts(1:5)
    
    temp
    Time Series:
    Start = 1 
    End = 5 
    Frequency = 1 
    [1] 1 2 3 4 5
    
    typeof(temp)
    [1] "integer"
    
    class(temp)
    [1] "ts"
    

    【讨论】:

    • 我的class(z1) 返回"zoo" 而不是ts。我想我错过了什么......
    • 概念是一样的。时间序列对象 (ts) 可以通过as.zoo 轻松转换为zoo 对象。
    【解决方案2】:

    一点点研究大有裨益。

    要将csv 文件转换为时间序列,似乎可以这样做:

    z3<-ts(z1)
    z4<-ts(z2)
    

    这样:

    > z3
    Time Series:
    Start = 1 
    End = 7 
    Frequency = 1 
    
    1
    2
    3
    4
    5
    6
    7
    attr(,"index")
    [1] 1 2 3 4 5 6 7
    

    和

    > class(z3)
    [1] "ts"
    

    z4 当然也一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 2012-03-30
      • 2014-03-08
      • 1970-01-01
      • 2012-02-27
      • 2023-03-13
      • 1970-01-01
      相关资源
      最近更新 更多