我在同一列中有一个包含多个不同字符串的表。我希望能够搜索该列并找到不同的字符串,然后为每个不同的字符串返回不同的结果。例如,如果我有以下数据列:
Seq_ID Column2
1. RNA-ATI_1
2. RNA-ATI_2
3. DNA-FU_1
4. FU-DNA_2
5. DNA-TP1_1
6. RNA-TP1_2
7. RNA-BL_1
8. BL-RNA_2
我想搜索字符串“ATI”并返回“ATI”并搜索“FU”并返回“FU”和“TP1”并返回“TP1”以便我可以构建一个包含字符串的新表单独的column2
。
我可以使用grepl
为单个值执行此操作,但我无法弄清楚如何为多个输出执行此操作。一些警告是数据并不总是在相同的顺序或分开
相同的符号。
y <- ifelse(grepl("*ATI", tab$Sequence_ID), "Analytical treatment interruption", " ")
这似乎仅适用于一个,但我无法弄清楚如何将其扩展为多个工作。
最后我想:
Seq_ID Column2
1. RNA-ATI_1 ATI
2. RNA-ATI_2 ATI
3. DNA-FU_1 FU
4. FU-DNA_2 FU
5. DNA-TP1_1 TP1
6. RNA-TP1_2 TP1
7. RNA-BL_1 BL
8. BL-RNA_2 BL
答案 0 :(得分:2)
您可以为regexpr
调用指定多个模式,假设它们都是不同的字符串。 E.g:
regmatches(dat$Column2, regexpr("ATI|FU|TP1|BL", dat$Column2))
#[1] "ATI" "ATI" "FU" "FU" "TP1" "TP1" "BL" "BL"
这也可以使用stringi
和stringr
函数在str_extract
stri_extract
等软件包中进行类比 - 请参阅@mnel及其上述答案。
答案 1 :(得分:1)
您可以使用stringr::str_extract_all
y <- stringr::string_extract_all(dat$Column2,"ATI|FU|TP1|BL")