の末尾に単語バリエーションを削除します。R GSUB私は、次のベクトル持っている唯一の文字列
a <- c("SOCORRO SANTANDER", "SANTANDER DE QUILICHAO",
"LOS PATIOS NORTE DE SANTANDER", "LOS PATIOS NTE DE S DER")
をし、「SANTANDER」の出現をすべて削除する必要がありますか(既存の場合、およびNORTEまたはその略語の前に)それは略語です文字列の末尾にの場合はのみです。 (それが失敗した理由をコメントで)
は、これまで私が試してみた:
gsub("(.*)(N.*DER$)", "\\1", a) # Fails at SOCORRO
gsub("(.*)(N.*DER$| DER$)", "\\1", a) # Only removes DER at LOS PATIOS
gsub("(.*)([ N.*DER$]|[ DER$])", "\\1", a) # Removes trailing R (??)
gsub("(.*)(N?.*DER$)", "\\1", a) # Fails removing " NTE DE S" and "NORTE DE"
ので、特に、私は十分に文字列、が、より多くの不要な部分を削除する方法を知りたいです一般的にはこのような状況をテストする正規表現を作成する正しい方法を知りたいと思います(私の最初の執筆は「OR(|
)をグループ内で使用する」ということでした)。
期待される結果は次のとおりです。
a
## [1] "SOCORRO" "SANTANDER DE QUILICHAO" "LOS PATIOS" "LOS PATIOS"
aは、試行3が後続のRだけを削除した理由を説明します。それは私を困惑させる!ありがとう。 – PavoDive
出力を得るには、 'gsub("(?:SOCORRO)?(。*?)(N. * DER $)? "、" \\ 1 "、a)'があります。私は他にもたくさんあると確信しています。 – lukeA
@lukeAあなたのコメントをいただきありがとうございます。私は例を単純化し、短くて再現性のあるものにするようにしました。実際のデータには、SOCORROの他にも多くの町の名前があります。 – PavoDive