[英]How to arrange, group and concentrate string values of repeated keys in different column using R
我有一個包含 10 列的蛋白質域的 HMMSCAN 結果文件。 請參閱 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)
我希望我對問題陳述很清楚。 提前致謝!!
您的輸入數據集有兩個不規則行。 但是,您的解決方案中的方法是正確的,但還需要一個步驟:
library(dplyr)
df %>% select(V3,V1) %>% group_by(V3) %>% mutate(x = paste(V1,collapse=" ")) %>% select(V3,x)
我們在這里所做的只是通過V3
集中字符串。 在此解決方案中運行上述代碼之前,您應該手動預處理和修復一些不正確的行。 行(TIM、Dannase 和 DLH)。 為此,您可以使用 Excel 中的將文本轉換為列function。
定義的所需步驟如下。 有問題的列以黃色突出顯示:
對不起,我的 Excel 的非英文界面,但方式是不言自明的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.