Как манипулировать этой матрицей? - PullRequest
0 голосов
/ 14 апреля 2019

У меня есть 3 столбца с большим количеством строк.1-й и 3-й столбец являются именами, а 2-й столбец - значениями.Я хотел бы создать новую матрицу / data.frame, где 1-й столбец исходной матрицы становится уникальными именами строк, 3-й столбец становится уникальными именами столбцов, а значения из 2-го столбца корректно заполняются в новой матрице.

Оригинальная матрица

1 Ответ

0 голосов
/ 14 апреля 2019

Во-первых, вам нужно объединить несколько строк, потому что, если у вас есть комбинация уникальных sample_id и уникальных taxon_id, которые повторяются дважды, вы не можете иметь уникальное имя строки и уникальное имя в конечном выводе. Я выдвинул гипотезу для суммирования значений уникального сочетания выборки-таксона (с функцией group_by() и summarise() библиотеки dplyr ).

Затем, поскольку я уверен, что у меня есть уникальные комбинации образцов-таксонов, я использовал функцию spread() из библиотеки tidyr , чтобы преобразовать столбец 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...