R xts:为多维面板数据创建xts对象失败

时间:2015-09-11 11:19:42

标签: r time-series xts panel-data

我在为多维面板数据创建xts对象时遇到问题。 数据如下所示:

Object  Factor  Quarter     Units
A       x       01.01.2013  255
A       x       01.04.2013  240
A       x       01.07.2013  310
A       x       01.10.2013  420
A       x       01.01.2014  520
A       y       01.01.2013  170
A       y       01.04.2013  160
A       y       01.07.2013  207
A       y       01.10.2013  280
A       y       01.01.2014  347
B       x       01.01.2013  1199
B       x       01.04.2013  1330
B       x       01.07.2013  1450
B       x       01.10.2013  1214
B       x       01.01.2014  1429
B       y       01.01.2013  827
B       y       01.04.2013  764
B       y       01.07.2013  924
B       y       01.10.2013  844
B       y       01.01.2014  893

在这篇文章here中定位自己,我的R代码如下所示:

library(xts)
Data2 <- read.csv('TestData.csv')
Data2List <- split(Data2, Data2$Object)
xtsData2 <- lapply(Data2List, function(x){
  attrCol <- c("Object", "Factor")
  numCol <- c("Units")
  y <- xts(x[,numCol], as.Date(x$Quarter, format = '%d.%m.%Y'))
  xtsAttributes(y) <- as.list(x[1,attrCol]) 
  y
})

A的总结看起来像这样,对我来说这很好看:

str(xtsData2$A)
An ‘xts’ object on 2013-01-01/2014-01-01 containing:
  Data: int [1:10, 1] 255 170 240 160 310 207 420 280 520 347
  Indexed by objects of class: [Date] TZ: UTC
  xts Attributes:  
List of 2
 $ Object: Factor w/ 2 levels "A","B": 1
 $ Factor: Factor w/ 2 levels "x","y": 1

但不知何故,周期性搞砸了:

 > periodicity(xtsData2$A)
0 seconds periodicity from 2013-01-01 to 2014-01-01 

这在axTicksByTime函数中也可见:

axTicksByTime(xtsData2$A)
Jan 01 00:00:00 Apr 01 00:00:00 Jul 01 00:00:00 Okt 01 00:00:00 Jan 01 00:00:00 Jan 01 00:00:00 
              1               3               5               7               9              10 

当我输入没有因子列的数据时,一切正常,周期性正确显示为每季度。

如何在R仍然识别数据格式的情况下正确输入我的多维数据?

0 个答案:

没有答案