转置和连接R data.tables

时间:2017-08-08 15:14:19

标签: r data.table concatenation

这是R中的一个简单任务,但似乎我有一个误解。任何帮助澄清表示赞赏:

我有一个单个文本文件的R data.table:

dat = as.data.table(fread(...))

      type         proportion                                                                                                                                                                                                                                                                                                                               
  1:  type_3      0.5570502431                                                                                                                                                                                                                                                                                                                                
  2:  type_5      0.1108589951                                                                                                                                                                                                                                                                                                                                
  3:  type_1      0.0688816856                                                                                                                                                                                                                                                                                                                                
  4:  type_9      0.0601296596                                                                                                                                                                                                                                                                                                                                
  5:  type_8      0.0554294976                                                                                                                                                                                                                                                                                                                                
  6:  type_12     0.0450567261                                                                                                                                                                                                                                                                                                                                
  7:  type_2      0.0322528363                                                                                                                                                                                                                                                                                                                                
  8:  type_4      0.0202593193                                                                                                                                                                                                                                                                                                                                
  9:  type_7      0.0166936791                                                                                                                                                                                                                                                                                                                                
 10:  type_6      0.0145867099                                                                                                                                                                                                                                                                                                                                
 11:  type_10     0.0141004862                                                                                                                                                                                                                                                                                                                                
 12:  type_11     0.0040518639      

有约。这些文本文件中的500个,我可以将其作为R data.table读入并放入R列表中。原则上这很简单:

list_of_data.tables = list(dat1, dat2, dat3, ...)

concat = do.call("rbind", list_of_data.tables)

这不是我想要的格式。我想将列type作为最终连接的data.table,type_1type_2type_3等的标题。然后,最后的每一行连接的data.table将是porportion等的dat1

这是最终连接data.table的格式:

     type_1 type_2 type_3 type_4 type_5 type_6 ...
dat1 0.557  0.110  0.068  0.0601 0.0554 0.045  ...
dat2 0.23   0.324  0.12   0.0723 0.002  0.004  ...
...

我的第一个想法是将原始data.table与t()转置,但这不会使type成为标题。此外,我不知道如何用dat1等标记每一行

做这么简单的事情的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

对于每个dat,您需要spread数据

library(tidyr)
new.dat <- dat %>%
             spread(type, proportion)

然后对于list_of_new.dat,假设它们在列表中,您可以将它们与

绑定
Reduce("full_join", list_of_new.dat)