我有一个文本文件,其中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
有人能帮助我吗?
答案 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
:
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)