寻找 table 个具有特定字母组合的元素并删除最后几个字符
Seek table elements with a specific letter combination and remove the last few characters
我有一个 table 基因,其中一些是重复的。我不担心重复。重复来自 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])
}
}
使用正向预测 ?=
是一种选择。查找 _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)
你可以替代:
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
我有一个 table 基因,其中一些是重复的。我不担心重复。重复来自 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])
}
}
使用正向预测 ?=
是一种选择。查找 _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)
你可以替代:
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