Как упорядочить, сгруппировать и сконцентрировать строковые значения повторяющихся ключей в разных столбцах, используя R - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть файл результатов HMMSCAN белковых доменов с 10 столбцами. см. ссылку на файл CSV.

https://docs.google.com/spreadsheets/d/10d_YQwD41uj0q5pKinIo7wElhDj3BqilwWxThfIg75s/edit?usp=sharing

Но я хочу, чтобы это выглядело так: -

1BVN:P|PDBID|CHAIN|SEQUENCE      Alpha-amylase      Alpha-amylase_C    A_amylase_inhib
3EF3:A|PDBID|CHAIN|SEQUENCE      Cutinase           
3IP8:A|PDBID|CHAIN|SEQUENCE      Amdase
4Q1U:A|PDBID|CHAIN|SEQUENCE      Arylesterase
4ROT:A|PDBID|CHAIN|SEQUENCE      Esterase           
5XJH:A|PDBID|CHAIN|SEQUENCE      DLH
6QG9:A|PDBID|CHAIN|SEQUENCE      Tannase            

повторяющиеся записи столбца 3 должны быть сгруппированы, а соответствующие значения столбца 1, которые находятся в разных строках, должны быть расположены в отдельных столбцах.

Это то, что я написал до сих пор:

df <- read.csv ("hydrolase_sorted.txt" , header = FALSE, sep ="\t")
new <- df %>% select (V1,V3) %>% group_by(V3) %>% spread(V1, V3)

Надеюсь, я согласен с формулировкой проблемы. Заранее спасибо !!

1 Ответ

0 голосов
/ 13 апреля 2020

Ваш входной набор данных имеет две нерегулярные строки. Тем не менее, подход в вашем решении правильный, но требуется еще один шаг:

library(dplyr)
df %>% select(V3,V1) %>% group_by(V3) %>% mutate(x = paste(V1,collapse=" ")) %>% select(V3,x)

То, что мы здесь сделали, это просто концентрация строк на V3. Перед запуском вышеупомянутого кода в этом решении вы должны предварительно обработать и исправить некоторые неправильные строки вручную. Строки (TIM, Dannase и DLH). Для этого вы можете использовать функцию Преобразование текстов в столбец в Excel.

Определены необходимые шаги ниже. Проблематичные c столбцы выделены желтым цветом:

First Step Second Step Third steps

Извините за не английский sh интерфейс моего Excel, но путь не требует пояснений.

...