首页 > 解决方案 > 从混合字符串中提取特定位置的字母和数字

问题描述

df
   Chromosome aaChange
1          16 p.E548fs
2          16   p.S64X
3          16   p.P23H
4          16   p.G18V
5          16  p.L251S

我想提取第三个字母和后面的数字。下面是我想要的输出。

   Chromosome aaChange Protein_position
 1         16 p.E548fs             E548
 2         16   p.S64X              S64
 3         16   p.P23H              P23
 4         16   p.G18V              G18
 5         16  p.L251S             L251

谢谢。

标签: rregex

解决方案


您可以sub在基础 R 中执行此操作:

transform(df, Protein_position = sub('..(.\\d+).*', '\\1', aaChange))

#  Chromosome aaChange Protein_position
#1         16 p.E548fs             E548
#2         16   p.S64X              S64
#3         16   p.P23H              P23
#4         16   p.G18V              G18
#5         16  p.L251S             L251

数据

df <- structure(list(Chromosome = c(16L, 16L, 16L, 16L, 16L), 
aaChange = c("p.E548fs", "p.S64X", "p.P23H", "p.G18V", "p.L251S")), 
class = "data.frame", row.names = c(NA, -5L))

推荐阅读