如何将以下数据框(面板数据)转换为动物园?让 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
.. .. .. ..
上述数据框在 zoo 包中执行功能最合适的转换形式是什么?
非常感谢您的帮助...
zoo with split 我们不能拥有看起来像问题中样本输出的动物园对象;但是,如果我们将问题更改为需要宽形式的时间序列,我们可以将
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
注意:在zoo的开发版本中
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)
有谁知道如何做逆向过程?从具有多个变量的动物园时间序列 A_var1 A_var2 B_var1 B_var2 到面板数据帧?