滿足條件時如何在字串中添加值。
例如,取以下資料:
my_data <- c("ab 93 1455 1863 2713 sb 673 771 1601 1969",
"ab 93 1098 1455 2423 2427 sb 168 673 1256",
"ab 93 1098; sb 1256")
我想添加一個“;” 當一個數字進行一個字符時。
因此,我希望輸出為:
output<- c("ab 93 1455 1863 2713; sb 673 771 1601 1969",
"ab 93 1098 1455 2423 2427; sb 168 673 1256",
"ab 93 1098; sb 1256")
如果這個解決方案可以在資料框的背景關系中完成,那就太好了。
到目前為止,我已經能夠使用以下代碼檢測到我感興趣的條件:
str_detect(my_data, "[0-9] [a-z]")
[1] TRUE TRUE FALSE
但我很難超越這一點。
感謝您的幫助!
uj5u.com熱心網友回復:
當然,使用正則運算式:
output <- gsub("(\\d)( [a-zA-Z])", "\\1;\\2", my_data)
print(output)
# [1] "ab 93 1455 1863 2713; sb 673 771 1601 1969" "ab 93 1098 1455 2423 2427; sb 168 673 1256"
# [3] "ab 93 1098; sb 1256"
uj5u.com熱心網友回復:
或者使用環視的另一個選項,在左側斷言一個數字,在右側斷言 1 個或多個空格,然后是 char a-zA-Z:
my_data <- c("ab 93 1455 1863 2713 sb 673 771 1601 1969",
"ab 93 1098 1455 2423 2427 sb 168 673 1256",
"ab 93 1098; sb 1256")
gsub("(?<=\\d)(?= [a-zA-Z])", ";", my_data, perl=T)
[1] "ab 93 1455 1863 2713; sb 673 771 1601 1969"
[2] "ab 93 1098 1455 2423 2427; sb 168 673 1256"
[3] "ab 93 1098; sb 1256"
正則運算式演示| R 演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/520263.html
標籤:r正则表达式细绳
上一篇:洗掉批處理腳本中變數中的感嘆號
