[英]In R, remove substring pattern from string with gsub
我們的數據庫中有一個字符串列,其中包含運動隊的值。 這些球隊的名稱有時會以球隊的排名為前綴,例如: (13) Miami (FL)
。 這里的 13 是邁阿密的排名,(FL) 表示這是佛羅里達州的邁阿密,而不是俄亥俄州的Miami (OH)
):
我們需要清理這個字符串,刪除(13)
並只保留Miami (FL)
。 到目前為止,我們已經使用了gsub
並嘗試了以下操作:
> gsub("\\s*\\([^\\)]+\\)", "", "(13) Miami (FL)")
[1] " Miami"
這是錯誤地刪除了 (FL) 后綴,並且它也沒有正確處理前面的空白區域。
這里有一些額外的學校名稱,以顯示我們正在使用的數據。 請注意,並非每所學校都有 (##) 前綴。:
c("North Texas", "Southern Methodist", "Texas-El Paso",
"Brigham Young", "Winner", "(12) Miami (FL)", "Appalachian State",
"Arkansas State", "Army", "(1) Clemson",
"(14) Georgia Southern")
您可以使用sub
刪除括號中的數字,后跟空格。
sub("\\(\\d+\\)\\s", "", "(13) Miami (FL)")
#[1] "Miami (FL)"
正則表達式可以根據數據中的模式變得更嚴格。
我們可以匹配的開口(
后面跟着一個或多個數字( \\\\d+
),然后關閉)
)和一個或多個空間( \\\\s+
)中,用空白替換( ""
)
sub("\\(\\d+\\)\\s+", "", "(13) Miami (FL)")
#[1] "Miami (FL)"
使用 OP' 更新示例
sub("\\(\\d+\\)\\s+", "", v1)
#[1] "North Texas" "Southern Methodist" "Texas-El Paso" "Brigham Young" "Winner" "Miami (FL)"
#[7] "Appalachian State" "Arkansas State" "Army" "Clemson" "Georgia Southern"
或者使用str_remove
from stringr
另一個選項
library(stringr)
str_remove("(13) Miami (FL)", "\\(\\d+\\)\\s+")
另一個基於stringr
解決方案是:
str_extract(v1, "[A-Z].*")
[1] "North Texas" "Southern Methodist" "Texas-El Paso" "Brigham Young" "Winner"
[6] "Miami (FL)" "Appalachian State" "Arkansas State" "Army" "Clemson"
[11] "Georgia Southern"
這將從第一個大寫字母開始提取所有內容(從而忽略不需要的排名)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.