2017-07-31 57 views
1

我有一个包含数ENSEMBL基因注释的数据帧时,DF看起来是这样的:如何删除'。'从数据框中的列内容?

 geneID 
1 ENSG00000000005.5 
2 ENSG00000001561.6 
3 ENSG00000002726.18 
4 ENSG00000005302.16 
5 ENSG00000005379.14 
6 ENSG00000006116.3 

,所以我想删除“”以及每个ID末尾的数字。总共有11224行。 我试过使用gsub命令gsub(".","",colnames(dataframe)),但这没有帮助。

有什么建议吗? 预先感谢您。

+0

有没有这种情况下,你会有非数字,并希望保持完好?即'ENSG0000000005.TR'保持相同...或者'ENSG000000005.5E'并且留下'ENSG000000005.E'?如果不是,你想永远删除点后的所有内容,那么这是[此问题]的副本(https://stackoverflow.com/questions/10617702/remove-part-of-string-after) – Sotos

回答

1

如果我们需要的.末,捕捉的人物,直到.(如.是一个字元即任何字符,转义(\\)),后面跟着一个或多个数字(\\d+),直到字符串的结尾并与所捕获的组

df1$geneID <- sub("^(.*\\.)\\d+$", "\\1", df1$geneID) 

如果目的是去除.用后的数字的反向引用(\\1)替换,匹配点,接着通过一个或多个数字和与空白(""

取代
df1$geneID <- sub("\\.\\d+", "", df1$geneID) 
df1$geneID 
#[1] "ENSG00000000005" "ENSG00000001561" "ENSG00000002726" "ENSG00000005302" 
#[5] "ENSG00000005379" "ENSG00000006116" 
+1

它的工作原理! :-D非常感谢你! – Biocrazy

0

您可以使用以下代码在'。'后删除字母数字。

gsub("\\..*", "", df$geneID)