这是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_1
,type_2
,type_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
等标记每一行
做这么简单的事情的正确方法是什么?
答案 0 :(得分:1)
对于每个dat
,您需要spread
数据
library(tidyr)
new.dat <- dat %>%
spread(type, proportion)
然后对于list_of_new.dat
,假设它们在列表中,您可以将它们与
Reduce("full_join", list_of_new.dat)