如何将以下数据框(面板数据)转换为动物园?让df表示我的数据框;
Ctry year Carx Brx
A 2000 23 12
A 2001 18 16
A 2002 20 20
A 2003 NA 18
A 2004 24 NA
A 2005 18 12
B 2000 NA 22
B 2001 NA 20
B 2002 NA 14
B 2003 NA NA
B 2004 18 NA
B 2005 16 14
C 2000 NA NA
C 2001 NA 25
C 2002 24 32
C 2003 21 NA
C 2004 NA 15
C 2005 24 NA
我尝试过以下代码
df.zoo=zoo(df[,-2], order.by=as.Date(strptime(as.character(df[,2]), "%Y")))
我通过警告得到以下结果:"如果'order.by'中的索引条目不是唯一的,那么“zoo”对象的某些方法不起作用"
year Ctry Carx Brx
2000-06-02 A 23 12
2000-06-02 B NA 22
2000-06-02 C NA NA
.. .. .. ..
上述数据框最适合在动物园包中执行功能的转换形式是什么?
非常感谢你的帮助......答案 0 :(得分:1)
分裂的动物园我们不能拥有看起来像问题中的样本输出的动物园对象;但是,如果我们将问题更改为需要广泛的时间序列,我们可以将read.zoo
与split
参数一起使用:
z <- read.zoo(DF, split = "Ctry", index = "year", FUN = identity)
,并提供:
> z
Carx.A Brx.A Carx.B Brx.B Carx.C Brx.C
2000 23 12 NA 22 NA NA
2001 18 16 NA 20 NA 25
2002 20 20 NA 14 24 32
2003 NA 18 NA NA 21 NA
2004 24 NA 18 NA NA 15
2005 18 12 16 14 24 NA
两个动物园对象或者,考虑创建两个动物园对象:
Carx.z <- read.zoo(DF[, -3], split = "Ctry", index = "year", FUN = identity)
Brx.z <- read.zoo(DF[, -4], split = "Ctry", index = "year", FUN = identity)
,并提供:
> Carx.z
A B C
2000 12 22 NA
2001 16 20 25
2002 20 14 32
2003 18 NA NA
2004 NA NA 15
2005 12 14 NA
> Brx.z
A B C
2000 23 NA NA
2001 18 NA NA
2002 20 NA 24
2003 NA NA 21
2004 24 18 NA
2005 18 16 24
注意:在动态范围read.zoo
的开发版中,能够自动找出FUN = identity
部分,以便可以删除参数。
可重现的测试数据。我们在上面使用了以下数据框DF
:
Lines <- "Ctry year Carx Brx
A 2000 23 12
A 2001 18 16
A 2002 20 20
A 2003 NA 18
A 2004 24 NA
A 2005 18 12
B 2000 NA 22
B 2001 NA 20
B 2002 NA 14
B 2003 NA NA
B 2004 18 NA
B 2005 16 14
C 2000 NA NA
C 2001 NA 25
C 2002 24 32
C 2003 21 NA
C 2004 NA 15
C 2005 24 NA
"
DF <- read.table(text = Lines, header = TRUE)