我是时间序列数据的新手,以及如何在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中的索引?
在此感谢任何帮助。
答案 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
参数。然后必须从因变量中省略日期列。