如何删除'。'来自数据框中的列内容?

时间:2017-07-31 14:10:13

标签: r dataframe

我有一个包含许多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)),但这没有帮助。

有什么建议吗? 提前谢谢。

2 个答案:

答案 0 :(得分:1)

如果我们最后需要.,请捕获字符,直到.(因为.是一个元字符,意味着任何字符,转义它(\\))后跟一个或多个数字(\\d+),直到字符串结尾,并替换为捕获组的反向引用(\\1

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

如果打算在此之后删除带有数字的.,请匹配点后跟一个或多个数字,然后替换为空白(""

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

答案 1 :(得分:0)

您可以使用以下代码在'。'

之后删除字母数字
gsub("\\..*", "", df$geneID)