r - 查找具有特定字母组合的表格元素并删除最后几个字符
问题描述
我有一张基因表,其中一些是重复的。我不担心重复。重复来自 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])
}
}
解决方案
使用积极的前瞻?=
可以是一种选择。寻找之前的角色_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)
推荐阅读
- aws-cloudwatch-log-insights - AWS Cloudwatch Insights:如何按计数聚合(*)
- google-api - 修改日历信息(名称、描述等)后 Google 日历 ETag 未更新
- pouchdb - 如何取消一次性复制
- php - 将数组导出到 XML 文件 - utf-8 编码问题
- java - Spring Factory 方法“jdbcTemplate”抛出异常;属性“数据源”是必需的
- r - 如何在 ggplot2 中应用 after_stat 和 faceting?
- c# - 通过对重复信息进行分组从列表中创建对象
- c++ - return r 总是有效的吗?
- java - 找不到 io.spring.gradle:propdeps-plugin:0.0.9.RELEASE
- python - 将网站表格转换为 pandas df(beautifulsoup 无法识别表格)