Искать элементы таблицы с определенной комбинацией букв и удалять последние несколько символов - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть таблица генов, некоторые из которых дублированы. Я не беспокоюсь о дублировании. Дублирование происходит из стенограммы из базы данных генов Ensemble. Когда об этом сообщается, он включает ген XXXX, затем добавляет _ENST00000WWWWWW, эта добавленная часть всегда содержит 16 символов (где XXXXX - это имя гена, а WWWWWW - целые числа). Это отображается как 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])
  }
}

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Вы можете заменить:

 transform(df,Gene.Name=sub("_.*","",Gene.Name))
      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
0 голосов
/ 28 апреля 2018

Использование положительного взгляда ?= может быть одним из вариантов. Ищите символы до _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)
...