【问题标题】:converting data.frames into time series将 data.frames 转换为时间序列
【发布时间】:2016-11-22 03:02:20
【问题描述】:

我们又来了,我仍然在上面的问题上撞墙。 我有一个通过 csv 上传的 data.frame,如下所示:

X          SPY      VTI
01.02.2002 0.0000   0.0000
04.02.2002 -2.4578  -2.4167 
.....
31.12.2015 -1.003   -0.9685

其中 X 是日期,SPY 和 VTI 是股票收益

我尝试了很多方法来转换为时间序列。首先我尝试了

spyvti$X <- as.Date(as.character(spyvti$X),format="%d.%m.%Y.")

我得到的是:

 X        SPY     VTI
 NA       0.0000    0.0000
 NA       -2.4856   -2.4167
 .....
 NA       -1.003   -0.9685

所以看起来它无法在类(日期)的对象中转换第一列,这是一个因素。

我还尝试将 data.drame 分离为 3 个不同的向量,首先将日期向量转换为字符,这有效,然后

date <- as.Date(date, format = "%d.%m.%Y.")
error in charToDate(x):
character string is not in a standard unambiguous format.

所以我想在克服日期问题方面获得一些帮助,我想知道当日期问题结束后,创建如下所示的 ts 对象是否正确

 tsobject <- xts(date,spy)

其中 spy 是一个数字。

非常感谢

保罗

【问题讨论】:

  • 你的日期格式是%d.%m.%Y,而不是%d.%m.%Y.

标签: r dataframe time-series type-conversion as.date


【解决方案1】:

使用“lubridate”包。它使日期转换变得超级简单。

library(lubridate)
dmy(spyvti$x)

【讨论】:

    【解决方案2】:

    这是我的想法。希望它有效。您可以尝试以下方法:

      Yourdataframe$X<-strptime(as.character(Yourdataframe$X),format="%d.%m.%Y")
      Yourdataframe<-xts(Yourdataframe[,2:3],order.by=Yourdataframe[,1]
    

    【讨论】:

      【解决方案3】:

      假设您的示例数据框名为 df,您可以将其转换为 xts 时间序列对象,如下所示:

      library(xts)
      xtsObject <- as.xts(df[,-1],order.by = as.Date(as.character(df[,1]), format = "%d.%m.%Y"))
      

      【讨论】:

        猜你喜欢
        • 2021-08-11
        • 1970-01-01
        • 2013-06-07
        • 1970-01-01
        • 2021-08-02
        • 2012-10-23
        • 2019-06-16
        • 2014-05-14
        • 1970-01-01
        相关资源
        最近更新 更多