使用R需要时间序列数据的帮助

时间:2017-04-25 04:36:22

标签: r time-series

我是时间序列数据的新手,以及如何在R中分析/处理它。我有一个数据框,其中包含2012年至2015年每日货币汇率(美元兑换欧元)的详细信息。以下是数据帧,dfEurUSDExchange,看起来像。

ExchangeDate | ExchangeRate |   Year |   YrMon   |   YrQtr  
2012-01-01   |   0.772484   |   2012 |   2012-01 |   2012-Q1   
2012-01-02   |   0.773471   |   2012 |   2012-01 |   2012-Q1   
2012-01-03   |   0.766388   |   2012 |   2012-01 |   2012-Q1   
2012-01-04   |   0.772803   |   2012 |   2012-01 |   2012-Q1   
2012-01-05   |   0.781781   |   2012 |   2012-01 |   2012-Q1   

我知道我可以使用函数ts()将其转换为时间序列对象。但我面临一些问题。这是我正在尝试的。

tsEurUSDExchange = ts(dfEurUSDExchange, start = 2012, frequency = 365)

我收到一条警告说“在data.matrix(数据):强制引入的NA”。我相信这是由于YrMon和YrQtr下的字符数据。

问题1:我该怎么做才能解决此警告? 问题2:如何利用日期栏ExchangeDate?
问题3:如何使用ts.plot仅根据时间绘制ExchangeRate             tsEurUSDExchange中的索引?

在此感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

使用xts库,而不是基础R的ts()

library(xts)
# Create dat by reading tmp_file
dat <- read.table(text = "ExchangeDate | ExchangeRate |   Year |   YrMon   |   YrQtr
2012-01-01   |   0.772484   |   2012 |   2012-01 |   2012-Q1
2012-01-02   |   0.773471   |   2012 |   2012-01 |   2012-Q1
2012-01-03   |   0.766388   |   2012 |   2012-01 |   2012-Q1
2012-01-04   |   0.772803   |   2012 |   2012-01 |   2012-Q1
2012-01-05   |   0.781781   |   2012 |   2012-01 |   2012-Q1", 
                  stringsAsFactors = FALSE, header = TRUE, sep ="|")

# Convert dat into xts
dat.xts <- xts(dat[,2:ncol(dat)], order.by = as.Date(dat[,1], "%Y-%m-%d"))


plot.zoo(dat.xts)

必须单独读取日期列,此处我使用了order.by参数。然后必须从因变量中省略日期列。