私は個人とその出生国のデータセットを持っています。ただし、ユーゴスラビア、オーストリア帝国、プロイセンなどが存在した時代に生まれた人もいるため、列の値は現在の国を括弧で囲んでいます。後でデータを国ごとにグループ化できるように、国のみを角かっこで囲んでおくにはどうすればよいですか?
Person Birth Country
Nick Prussia (Germany)
Mike Germany
Maria Canada
Mark Russian Empire (Poland)
Sven Germany
Jarek Poland
キャプチャグループとしてaの後にsub
ない文字を抽出するために使用でき、代わりにキャプチャされたグループの後方参照()を指定します)
(
\\1
df1$Country <- sub(".*\\(([^)]+)\\).*", "\\1", df1$`Birth Country`)
df1$Country
#[1] "Germany" "Germany" "Canada" "Poland" "Germany" "Poland"
一致するパターンは、.*
(任意の文字)の後にリテラル(
(エスケープ\\(
---メタ文字であるため)が続き(...)
、)
([^)]+
)ではないグループ()として文字をキャプチャし、その後に)
(\\)
)およびその他の文字(.*
)
df1 <- structure(list(Person = c("Nick", "Mike", "Maria", "Mark", "Sven",
"Jarek"), `Birth Country` = c("Prussia (Germany)", "Germany",
"Canada", "Russian Empire (Poland)", "Germany", "Poland")),
class = "data.frame", row.names = c(NA,
-6L))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加