簡體   English   中英

如何使用 R 對不同列中重復鍵的字符串值進行排列、分組和集中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM