重新格式化基因关联文件

时间:2018-03-18 19:44:56

标签: r bash awk

我有一个文本文件,其中3列标签分开:
第1列:基因ID
第二列:值
第3列:与第1列逗号分隔的基因列表相关的基因列表(基因数量可以在不同行中变化)

TMCS09g1008699 6.4 TMCS09g1008677,TMCS09g1008681,TMCS09g1008685
TMCS09g1008690 5.3 TMCS09g1008686,TMCS09g1008680,TMCS09g1008675,TMCS09g1008690

等。

我想要的是这个:

TMCS09g1008699 6.4 TMCS09g1008677
TMCS09g1008699 6.4 TMCS09g1008681
TMCS09g1008699 6.4 TMCS09g1008685
TMCS09g1008690 5.3 TMCS09g1008686
TMCS09g1008690 5.3 TMCS09g1008680
TMCS09g1008690 5.3 TMCS09g1008675
TMCS09g1008690 5.3 TMCS09g1008690

有人能帮助我吗?

2 个答案:

答案 0 :(得分:3)

$ awk 'BEGIN{FS=OFS="\t"} 
            {n=split($3,f3,","); 
             for(i=1;i<=n;i++) 
               print $1,$2,f3[i]}' file

答案 1 :(得分:1)

以下是使用tidyverse

中的软件包的R解决方案
library(tidyverse);
df %>%
    mutate(V3 = str_split(V3, ",")) %>%
    unnest();
#              V1  V2             V3
#1 TMCS09g1008699 6.4 TMCS09g1008677
#2 TMCS09g1008699 6.4 TMCS09g1008681
#3 TMCS09g1008699 6.4 TMCS09g1008685
#4 TMCS09g1008690 5.3 TMCS09g1008686
#5 TMCS09g1008690 5.3 TMCS09g1008680
#6 TMCS09g1008690 5.3 TMCS09g1008675
#7 TMCS09g1008690 5.3 TMCS09g1008690

说明:str_split第3列基于",";使用list展开生成的unnest条目。

样本数据

df <- read.table(text =
    "TMCS09g1008699 6.4 'TMCS09g1008677,TMCS09g1008681,TMCS09g1008685'
TMCS09g1008690 5.3 'TMCS09g1008686,TMCS09g1008680,TMCS09g1008675,TMCS09g1008690'", header = F)