如何操纵这个矩阵?

时间:2019-04-14 18:14:46

标签: r

我有3列,其中有很多行。第一和第三列是名称,第二列是值。我想创建一个新的matrix / data.frame,其中原始矩阵的第一列变为唯一的行名,第三列变为唯一的列名,第二列的值正确地填充到新矩阵中。

Original Matrix

1 个答案:

答案 0 :(得分:0)

首先,您必须汇总一些行,因为如果您具有重复两次的唯一sample_id和唯一taxon_id的组合,则在列表中不能有唯一的行名和唯一的列名。最终输出。 我做了一个假设,对唯一样本分类群组合的值求和(使用库 dplyr 的函数group_by()summarise())。

然后,因为我确定有独特的样本分类单元组合,所以我使用了库 tidyr 中的函数spread(),以便将列taxon-id转换为列。

library(dplyr)
library(tidyr)

data.frame(
  sample_id = rep('SRX14', 4),
  abundance = c(5, 0, 645, 1042),
  taxon_id  = c('TACGG', 'AACGT', 'TACGG', 'TACGA')
) %>% 

  group_by(sample_id, taxon_id) %>% 
  summarise(abundance = sum(abundance)) %>% 

  spread(key = taxon_id, value = abundance)

#   sample_id AACGT TACGA TACGG
#   <fct>     <dbl> <dbl> <dbl>
# 1 SRX14         0  1042   650