如何进行R data.table的转置?为什么t()不起作用?

时间:2017-06-11 20:32:53

标签: r data.table transpose

我有以下R data.table

library(data.table)
mtcars = as.data.table(mtcars)
dt = colSums(mtcars)

> dt
     mpg      cyl     disp       hp     drat       wt     qsec       vs 
 642.900  198.000 7383.100 4694.000  115.090  102.952  571.160   14.000 
      am     gear     carb 
  13.000  118.000   90.000 

我想重塑data.table dt,如下所示:

> transpose
column1   column2
mpg       642.900
cyl       198.000
disp      7373.100
hp        4694.000
drat      115.090
wt        102.952
qsec      571.160
vs        14.000
am        13.000
gear      118.000
carb      90.000

函数t()似乎无法按预期工作。

transpose = t(dt)

我怀疑使用melt()dcast()可以快速执行此操作,但我不确定如何定义每个列,即column1column2 < / p>

2 个答案:

答案 0 :(得分:2)

我发现这个有用:

df = as.data.table(t(as.matrix(dt)))

它甚至保留了名字

答案 1 :(得分:1)

dplyr解决方案:

library(dplyr)
library(data.table)
mtcars <- data.table(mtcars) # make data.table
class(mtcars) # check that it is a data.table
mtcars %>% # take the data.table
  summarise_all(funs(sum)) %>% # get the sum of each column
  gather(variable, sum) # gather all columns

gatherspreadsummarise是我完成所有移调的方式。 &#34;变量&#34;和&#34;总和&#34;成为新的列名:

   variable      sum
1       mpg  642.900
2       cyl  198.000
3      disp 7383.100
4        hp 4694.000
5      drat  115.090
6        wt  102.952
7      qsec  571.160
8        vs   14.000
9        am   13.000
10     gear  118.000
11     carb   90.000