我在为多维面板数据创建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仍然识别数据格式的情况下正确输入我的多维数据?