【问题标题】:Rearranging Rows and Columns R [duplicate]重新排列行和列R [重复]
【发布时间】:2020-03-28 15:23:03
【问题描述】:

我尝试使用 reshape 查找解决方案,但我不知道如何将我的表格重新排列成我想要的样子。

我的桌子看起来像这样:

myTable<-data.table("AA-TotalPop-Mean"=c(1), "AA-Fr-Mean"=c(33), "AA-SW-Mean"=c(2), 
                    "AA-TotalPop-Median" = c(11), "AA-Fr-Median"= c(3), "AA-SW-Median" = c(22))

我不知道如何编写 R 代码来让我的 R 表最终看起来如何,但这里是一个 excel 表版本的屏幕截图:

【问题讨论】:

    标签: r data.table transpose


    【解决方案1】:

    一个选项是melt from data.table,也可以在measure参数中取多个patterns

    library(data.table)
    nm1 <- unique(sub('.*-', '', names(myTable)))
    melt(myTable, measure = patterns('Total', 'Fr', 'SW'), 
      value.name = c('AA_TotalPop', 'AA_Fr', 'AA_SW'), variable.name = 'Function')[, 
                 Function := nm1[Function]][]
    #    Function AA_TotalPop AA_Fr AA_SW
    #1:     Mean           1    33     2
    #2:   Median          11     3    22
    

    【讨论】:

      【解决方案2】:

      tidyr 的解决方案是:

      library(tidyr)
      
      gather(myTable) %>%
        separate(key, into = c('Var', 'Function'), sep="-(?=[^-]+$)") %>% 
        spread(Var, value)
      
      #>   Function AA-Fr AA-SW AA-TotalPop
      #> 1     Mean    33     2           1
      #> 2   Median     3    22          11
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-31
        • 1970-01-01
        • 1970-01-01
        • 2018-11-27
        • 2017-08-03
        • 2019-09-18
        • 2022-10-12
        相关资源
        最近更新 更多