R 重新格式化基因关联文件
我有一个文本文件,三列选项卡分开:R 重新格式化基因关联文件,r,bash,awk,R,Bash,Awk,我有一个文本文件,三列选项卡分开: 第1列:基因ID 第二列:一个值 第3列:与第1列中的基因相关的基因列表,以逗号分隔(基因数量可能因行而异) 等等 我想要的是: TMCS09g1008699 6.4 TMCS09g1008677 TMCS09g1008699 6.4 TMCS09g1008681 TMCS09g1008699 6.4 TMCS09g1008685 TMCS09g1008690 5.3 TMCS09g1008686 TMCS09g1008690 5.3 TMCS09g10086
第1列:基因ID
第二列:一个值
第3列:与第1列中的基因相关的基因列表,以逗号分隔(基因数量可能因行而异) 等等 我想要的是:
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
有人能帮我吗?$awk'BEGIN{FS=OFS=“\t”}
$ awk 'BEGIN{FS=OFS="\t"}
{n=split($3,f3,",");
for(i=1;i<=n;i++)
print $1,$2,f3[i]}' file
{n=拆分($3,f3,“,”);
对于(i=1;i$awk'BEGIN{FS=OFS=“\t”}
{n=拆分($3,f3,“,”);
对于(i=1;i,这里有一个R解决方案,使用来自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列基于”,“
;用unest
展开生成的列表
条目
样本数据
df这是一个R解决方案,它使用了来自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列基于”,“
;用unest
展开生成的列表
条目
样本数据
df我会将第一个文件中的字符串读入一些数据结构,比如字典,然后以稍微不同的方式将字典中的内容再次打印出来。我认为Python、Ruby或Javascript对于这样的任务来说是不错的语言,但这在某种程度上是一个品味问题。无论如何,正如现在所说的,您的在我看来,这个问题有点太宽泛了。你基本上是在要求人们免费为你编写代码。我建议你先尝试为自己想出一个解决方案,展示你做了什么,然后问一个更具体的问题。我会将第一个文件中的字符串读入一些数据结构,比如字典,然后打印出来我认为Python、Ruby或Javascript对于这样的任务来说是很好的语言,但这在某种程度上是一个品味问题。无论如何,正如现在所说的,我认为你的问题有点太宽泛了。你基本上是要求人们免费为你写代码。我建议您首先尝试为自己想出一个解决方案,展示您所做的,然后问一个更具体的问题。非常感谢。如果我从这里很好地理解了%>%是由tidyverse使用的(从dplyr导入)它只是提高了函数的可读性。对吗?是的,%%>%%
是来自magrittr
的管道操作符(通过tidyverse
导入),您可以使用它将值通过管道转发到表达式/函数以链接命令。有关详细信息,请参阅。非常感谢。如果我从这里很好地理解了%>%是由tidyverse(从dplyr导入)使用的,它只是提高了函数的可读性。对吗?是的,%%>
是magrittr
中的管道运算符(通过tidyverse
)导入),您可以使用它将值前推到表达式/函数中,以链接命令。有关详细信息,请参阅。
df <- read.table(text =
"TMCS09g1008699 6.4 'TMCS09g1008677,TMCS09g1008681,TMCS09g1008685'
TMCS09g1008690 5.3 'TMCS09g1008686,TMCS09g1008680,TMCS09g1008675,TMCS09g1008690'", header = F)