首页 > 解决方案 > 查找具有特定字母组合的表格元素并删除最后几个字符

问题描述

我有一张基因表,其中一些是重复的。我不担心重复。重复来自 Ensemble 基因数据库的转录本。报告时,它包含基因 XXXX,然后添加 _ENST00000WWWWWW,此添加部分始终为 16 个字符(其中 XXXXX 是基因名称,WWWWW 是整数)。这显示为 XXXX_ENST00000WWWWWW。手动删除这些实例太多了。我怎样才能遍历这个,识别这个模式,并删除这些元素?下面的例子。

       Name              Gene.Name CDS.Mutation AA.Mutation
1       1A                 ASXL3     c.350G>T     p.S117I
2       1A ASXL3_ENST00000269197    c.1229G>T     p.S410I
3       1A              C9orf174      c.95G>A      p.R32Q
4       1A  CLTC_ENST00000269122    c.2128G>C     p.G710R
5       1A                COL4A4     c.274G>A      p.G92R
6       1A                CREBBP    c.4445A>G    p.Y1482C



       Name             Gene.Name CDS.Mutation AA.Mutation
1       1A                 ASXL3     c.350G>T     p.S117I
2       1A                 ASXL3    c.1229G>T     p.S410I
3       1A              C9orf174      c.95G>A      p.R32Q
4       1A                  CLTC    c.2128G>C     p.G710R
5       1A                COL4A4     c.274G>A      p.G92R
6       1A                CREBBP    c.4445A>G    p.Y1482C

这是我拼凑起来的,但我可能不够了解,无法完全理解这一点。我对此有很多错误。

raw <- read.xlsx("Mutations.xlsx")
for (i in 1:nrow(raw)){
  if (length(grep("ENST", raw[i,2])) == 1){
    raw[i,2] <- gsub('.{16}$','', raw[i,2])
  }
}

标签: rregexgenetics

解决方案


使用积极的前瞻?=可以是一种选择。寻找之前的角色_ENST并使用组来收集那些。

df$Gene.Name <- gsub("(\\w{4,})(?=_ENST).{12}","\\1" ,df$Gene.Name, perl = TRUE)

df
#   Name Gene.Name CDS.Mutation AA.Mutation
# 1   1A     ASXL3     c.350G>T     p.S117I
# 2   1A     ASXL3    c.1229G>T     p.S410I
# 3   1A  C9orf174      c.95G>A      p.R32Q
# 4   1A      CLTC    c.2128G>C     p.G710R
# 5   1A    COL4A4     c.274G>A      p.G92R
# 6   1A    CREBBP    c.4445A>G    p.Y1482C

数据:

df <- read.table(text =
"    Name              Gene.Name CDS.Mutation AA.Mutation
1       1A                 ASXL3     c.350G>T     p.S117I
2       1A ASXL3_ENST00000269197    c.1229G>T     p.S410I
3       1A              C9orf174      c.95G>A      p.R32Q
4       1A  CLTC_ENST00000269122    c.2128G>C     p.G710R
5       1A                COL4A4     c.274G>A      p.G92R
6       1A                CREBBP    c.4445A>G    p.Y1482C",
header = TRUE, stringsAsFactors = FALSE)

推荐阅读