【问题标题】:R collapse data in a table [duplicate]R折叠表中的数据[重复]
【发布时间】:2014-05-08 17:04:29
【问题描述】:

我有一张如下表:

  Outcome   System  k_pval  k_exactpval k
  A          R       num    num        num
  B          S       num    num        num
  C          T       num    num        num
  A          X       num    num        num
  B          Y       num    num        num

如何跨制表使系统出现在列中,结果出现在行中,然后对于每个系统/结果对有 3 列(k、k_pval、k_exact_pval)。

例如,你会有

     A      A            A             B       B        B
R   k_1    k_p_val1  k_exact_pval1     k_2    k_pval2   k_exact_pval2  
S   k_3    k_p_val3  k_exact_pval3     k_4    k_pval4   k_exact_pval4    

谢谢!

【问题讨论】:

    标签: r reshape


    【解决方案1】:

    对于重塑数据,reshape2 包非常有用。我认为这将实现您的目标。

    dd <- data.frame(
        Outcome = c("A", "B", "C", "A", "B"), 
        System = c("R", "S", "T", "X", "Y"),
        k_pval = c(0.02, 0.04, 0.01, 0.1, 0.22), 
        k_exactpval = c(0.05, 0.02, 0.01, 0.3, 0.1), 
            k = c(4, 5, 3, 3, 1)
    )
    
    mm<-melt(dd, id.var=c("Outcome","System"))
    dcast(mm, System~variable+Outcome)
    

    【讨论】:

    • oOo,这很接近。我需要一些不同的东西..我已经修改了我的问题,使其更加明确..
    • 有效的 R 表不能有重复的列名(即,不能有三个名为“A”的列)。请重新考虑您真正需要的结果。如果只是你想要所有的A条款,只需将顺序切换到dcast(mm, System~Outcome+variable)
    • +1。考虑到数据的设置,这比“reshape2”问题更直接地是一个基本 R reshape 问题:reshape(dd, direction = "wide", idvar="System", timevar="Outcome")
    猜你喜欢
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    相关资源
    最近更新 更多