首页 > 解决方案 > 如何在R中的数据框中提取字符串的中间部分?

问题描述

我有一个包含几列的蛋白质组数据框。其中之一是称为描述,其中我们有蛋白质名称、OS、基因名称 (GN)、PE 和 SV,如下所示。

> head(pccmit$Description)
[1] "Protein NDRG4 OS=Homo sapiens GN=NDRG4 PE=1 SV=2"                                   
[2] "V-type proton ATPase subunit B_ brain isoform OS=Homo sapiens GN=ATP6V1B2 PE=1 SV=3"
[3] "Serotransferrin OS=Homo sapiens GN=TF PE=1 SV=3"                                    
[4] "Glutaminase kidney isoform_ mitochondrial OS=Homo sapiens GN=GLS PE=1 SV=1"         
[5] "Adenylate kinase isoenzyme 1 OS=Homo sapiens GN=AK1 PE=1 SV=3"                      
[6] "Sideroflexin-1 OS=Homo sapiens GN=SFXN1 PE=1 SV=4"

然后,我想只提取那些蛋白质的基因名称

我尝试使用 :str_extract 工具,但是它不起作用。也许是因为我没有使用该工具所需的正确模式

str_extract(A$Description, start = "GN=", end = " PE")

我希望有一个包含这些基因名称的数据框

> head(pccmit$Description)
[1] NDRG4
[2] ATP6V1B2
[3] TF

谢谢大家,伙计们

标签: rstringdataframe

解决方案


使用stringr包:

library(stringr)
str_extract(pccmit$Description, "(?<=GN=).*(?= PE)")

(?<=GN=)GN=后看后(?= PE)= PE.*中间匹配所有内容。


推荐阅读