R 将数据帧(面板数据)转换为zoo
如何将以下数据框(面板数据)转换为zoo?让df表示我的数据帧R 将数据帧(面板数据)转换为zoo,r,dataframe,type-conversion,zoo,R,Dataframe,Type Conversion,Zoo,如何将以下数据框(面板数据)转换为zoo?让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
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(strtime(as.character(df[,2]),%Y))
我得到了以下结果,但有一个警告:“如果'order.by'中的索引项不唯一,则“zoo”对象的某些方法不起作用”
为执行zoo软件包中的功能,上述数据帧最合适的转换形式是什么
非常感谢你的帮助 带有拆分的zoo我们不能有与问题中的示例输出类似的zoo对象;但是,如果我们将问题更改为需要广泛形式的时间序列,我们可以使用
read.zoo
和split
参数:
z <- read.zoo(DF, split = "Ctry", index = "year", FUN = identity)
<强>两个动物园对象< /强>交替地,考虑创建两个动物园对象:
Carx.z <- read.zoo(DF[, -3], split = "Ctry", index = "year", FUN = identity)
Brx.z <- read.zoo(DF[, -4], split = "Ctry", index = "year", FUN = identity)
注意:在zooread的开发版本中,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)
行
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
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)