我有3列有很多行。第1列和第3列是名称,第2列是值。我想创建一个新的matrix / data.frame,其中原始矩阵的第一列成为唯一的rownames,第3列成为唯一的列名,第二列的值在新矩阵中正确填充。
首先,你必须聚集一些行,因为如果你有一个独特的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