【问题标题】:converting a data frame (panel data) to zoo将数据框(面板数据)转换为动物园
【发布时间】:2014-07-22 08:38:39
【问题描述】:

如何将以下数据框(面板数据)转换为动物园?让 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包中执行功能最合适的转换形式是什么?

非常感谢您的帮助...

【问题讨论】:

    标签: r dataframe type-conversion zoo


    【解决方案1】:

    zoo with split 我们不能拥有看起来像问题中的示例输出的 zoo 对象;但是,如果我们将问题更改为需要宽格式时间序列,我们可以使用 read.zoosplit 参数:

    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)
    

    【讨论】:

      猜你喜欢
      • 2017-02-28
      • 1970-01-01
      • 2020-12-23
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      • 2021-11-02
      • 2014-01-19
      • 1970-01-01
      相关资源
      最近更新 更多