【问题标题】:How can I reformat a table in R?如何在 R 中重新格式化表格?
【发布时间】:2015-03-06 00:45:32
【问题描述】:

我加载了一个这样的表:

    V1  V2   V3
  pat1   1    2
  pat1   3    1
  pat1   4    2
  pat2   3    3
  pat3   1    4
  pat3   2    3

我需要将其格式化为如下所示,V1 表示行,V2 表示列,V3 中的值:

         1    2    3    4
 pat1    2    0    1    2
 pat2    0    0    3    0
 pat3    4    3    0    0

请注意,pat1 vs. pat2 vs. pat3 有不同数量的观察值,缺失值必须用 0 填充。

【问题讨论】:

    标签: r statistics reformatting


    【解决方案1】:

    基本的 R 替代方案是使用 xtabs:

    xtabs(V3 ~ V1 + V2, mydf)
    #       V2
    # V1     1 2 3 4
    #   pat1 2 0 1 2
    #   pat2 0 0 3 0
    #   pat3 4 3 0 0
    

    reshape:

    reshape(mydf, direction = "wide", idvar = "V1", timevar = "V2")
    #     V1 V3.1 V3.3 V3.4 V3.2
    # 1 pat1    2    1    2   NA
    # 4 pat2   NA    3   NA   NA
    # 5 pat3    4   NA   NA    3
    

    【讨论】:

    • 有用的基本包函数的优秀示例。
    【解决方案2】:

    使用来自reshape2dcast

    library(reshape2)
    dcast(dat,V1~V2,fill=0)
    
        V1 1 2 3 4
    1 pat1 2 0 1 2
    2 pat2 0 0 3 0
    3 pat3 4 3 0 0
    

    dat 在哪里:

    dat <- read.table(text='V1  V2   V3
      pat1   1    2
      pat1   3    1
      pat1   4    2
      pat2   3    3
      pat3   1    4
      pat3   2    3',header=TRUE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 2020-10-21
      • 2016-10-07
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      相关资源
      最近更新 更多