【问题标题】:Need help in time series data using R在使用 R 的时间序列数据方面需要帮助
【发布时间】:2017-04-25 04:36:21
【问题描述】:

我不熟悉时间序列数据以及如何在 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(data) 中:强制引入的 NAs”。我相信这是由于 YrMon 和 YrQtr 下存在的字符数据。

问题 #1:如何解决此警告?
问题#2:如何使用日期列 ExchangeDate?
问题#3:如何使用 ts.plot 仅绘制 ExchangeRate 与时间的关系 tsEurUSDExchange 中的索引?

在这里感谢任何帮助。

【问题讨论】:

  • 尝试使用as.POSIXct (dfEurUSDExchange$YrMon, format="%&-%m") 将您的YrMon 转换为日期格式并转换as.Factor(dfEurUSDExchange$YrQtr)。它可能会解决强制问题。
  • 老实说,从 xts 或 zoo 开始并在需要时转换回 ts 确实更容易。
  • 我试图了解 ts、xts 和 zoo 之间的区别。你能帮帮我吗?
  • 目前,我删除了 YrMon 专栏。现在我可以转换为 ts。

标签: r time-series


【解决方案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 参数。然后必须从因变量中省略日期列。

【讨论】:

  • 使用ts和xts有什么区别?另外,我还需要保留日期列吗?因为现在作为时间序列的一部分,它已经创建了时间索引。
  • 简而言之,xts 更加人性化,并且向后兼容 zoo 和 ts。有关详细信息,请阅读 xts 小插曲。您可以随时使用as.ts()as.zoo() 将您的 xts 对象转换为 ts 或 zoo 对象。 xts 将所有数据视为矩阵而不是数据框。索引列必须采用 iso 兼容的日期格式。 index 在某种程度上类似于数据框中的 rownames() 概念(但非可选且更严格的 w.r.t 类型)。
  • 谢谢。我现在明白了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 2011-08-06
  • 1970-01-01
相关资源
最近更新 更多