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