我无法执行正则表达式任务,如果有人可以提供帮助,那就太好了。
我需要将基因名称与附加的描述分开。使用在99%的案例中出现的术语涉及将其与“ GeneCards Summary”分开,可以使用tidyverse通过gene <- str_split (DF$Gene, "GeneCards Summary", simplify = TRUE)
来解决。但是现在有些不遵循这种模式的示例如下:
example <- c("STAT1Predisposition to Mucocutaneous Candidiasis",
"PMS2DNA Repair DefectsPMS2 Deficiency",
"FANCACombined ImmunodeficiencyFANCA",
"HAX1 This gene", "ELANE ELANE is a gene",
"IL1RNNon-Inflammasome Related", "PRKDCT-B- SCIDDNA PKcs",
"MSH6Severe Reduction", "AP3B1FHL Syndromes")
我能够找出以下模式,希望可以涵盖所有模式(不太可能,但是如果您的解决方案出现,我也应该把其余的模式也包括在内):
1)基因名后跟一个包含UPPERCASElowerlase的单词(因此,将这一部分与之前的部分分开)。
2)基因名称DNA(之前部分中的单独“ DNA”。
3)genename“”(空白)
4)基因名T-B-。
5)基因名FHL。
实际上,最棘手的是UPPERCASe小写字母部分,其余的我将尝试解决并在此处发布。
非常感谢你的帮助!
塞巴斯蒂安
这是我的解决方案的一部分,没有上/下一个:
clean_1 <- str_split(example, "DNA", simplify = T)
clean_2 <- str_split(clean_1, "[[:blank:]]", simplify = T)
clean_3 <- str_split(clean_2, "T-B", simplify = T)
clean_4 <- str_split(clean_3, "FHL", simplify = T)
我会每轮都这样做以清理数据,但是可能有更好的方法。
答案 0 :(得分:1)
假设您的示例代表了所有可能性,那么您拥有的是:
一个解决方案是:提取每个字符串中的第一个单词,然后确定附加单词的情况(一个大写字母,然后是小写字母)并删除它们。要继续使用package stringr:
library(stringr)
# Extract any characters before the first space:
fWord <- str_extract(example, '([^[:blank:]]+)')
# Find the index of strings that have lower cases:
ind <- grep('[:lower:]', fWord)
# Select everything until the first lower caseand remove the last character:
fWord[ind] <- str_sub(str_extract(fWord[ind], '([^[:lower:]]+)' ), end = -2)
> fWord
[1] "STAT1" "PMS2DNA" "FANCA" "HAX1" "ELANE" "IL1RN"
[7] "PRKDCT-B-" "MSH6" "AP3B1FHL"
我很确定这可以一行完成。尝试使您的问题更清楚,可能有人会提出一些花哨的正则表达式来完成任务。