在 R 中:我有一些具有以下字母和數字模式的字串
A11B3XyC4
A1B14C23XyC16
B14C23XyC16D3
B14C23C16D3
我想洗掉部分“Xy”(總是相同的字母),當我這樣做時,我想將字母 B 后面的數字增加一(其他一切都應該保持不變)。當字串中沒有“Xy”時,字串沒有變化結果應該如下所示:
A11B4C4
A1B15C23C16
B15C23C16D3
B14C23C16D3
你能給我指出一個能夠做到這一點的功能嗎?我很難用字串進行計算 (x 1)。
謝謝!
uj5u.com熱心網友回復:
我們可以使用str_replace在洗掉 'Xy' 后對 'B' 字串后面的數字子字串進行增量,僅適用于其中存在 'Xy' 子字串的情況case_when
library(stringr)
library(dplyr)
case_when(str_detect(str1, "Xy") ~ str_replace(str_remove(str1,
"Xy"), "(?<=B)(\\d )", function(x) as.numeric(x) 1), TRUE ~str1)
[1] "A11B4C4" "A1B15C23C16" "B15C23C16D3" "B14C23C16D3"
資料
str1 <- c("A11B3XyC4", "A1B14C23XyC16", "B14C23XyC16D3", "B14C23C16D3")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/368298.html
