重新排列行和列R

时间:2019-12-03 21:26:52

标签: r data.table transpose

我曾经尝试过使用整形查找解决方案,但是我不知道如何将表重新排列为我想要的样子。

我的桌子看起来像这样:

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表版本的屏幕截图:

enter image description here

2 个答案:

答案 0 :(得分:2)

一个选项是melt中的data.table,它也可以占用patterns参数中列的多个measure

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

答案 1 :(得分:0)

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