如何操纵这个矩阵?

问题描述 投票:0回答:1

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

Original Matrix

r
1个回答
0
投票

首先,你必须聚集一些行,因为如果你有一个独特的sample_id和独特的taxon_id组合重复两次,你不能在最终输出中有一个独特的rowname和一个唯一的colname。我假设将一个独特的样本 - 分类组合的值(与图谱dplyr的函数group_by()summarise())相加。

然后,因为我肯定有独特的样本 - 分类组合,我使用了库tidyr的函数spread(),以便将colum 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
© www.soinside.com 2019 - 2024. All rights reserved.