我有一个 data.tableR

> dt 
  SAMPLE   junction count 
1: R1        a       1 
2: R2        a       1 
3: R3        b       1 
4: R3        a       1 
5: R1        c       2 

现在我想“ reshape ”数据表以形成 data frame m (基本上由样本矩阵连接,索引值为对应的计数值)。另外,请注意 (SAMPLE,junction) dt 中不存在的对,我假设对应的 count值为 zero .
有人可以帮助我如何实现这一目标吗?
> m 
      R1   R2   R3 
  a    1    1    1 
  b    0    0    1 
  c    2    0    0 

请您参考如下方法:

dcast来自 data.table将数据集从“长”格式更改为“宽”格式。

library(data.table)#v1.9.5+ 
dcast(dt, junction~SAMPLE, value.var='count', fill=0) 
#   junction R1 R2 R3 
#1:        a  1  1  1 
#2:        b  0  0  1 
#3:        c  2  0  0 

如果您需要矩阵输出
library(reshape2) 
acast(dt, junction~SAMPLE, value.var='count', fill=0) 
#   R1 R2 R3 
#a  1  1  1 
#b  0  0  1 
#c  2  0  0 

xtabs来自 base R
 xtabs(count~junction+SAMPLE, dt) 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!