如何在R中保留字符串的某些部分

如何在R中保留字符串的某些部分,r,string,data-cleaning,R,String,Data Cleaning,我有一个个人及其出生国的数据集。然而,有些人出生在南斯拉夫、奥地利帝国、普鲁士等存在的时代,因此在“价值”列中,当前国家在括号中。我怎样才能只保留括号中的国家,以便以后可以按国家对数据进行分组 Person Birth Country Nick Prussia (Germany) Mike Germany Maria Canada Mark Russian Empire (Poland)

我有一个个人及其出生国的数据集。然而,有些人出生在南斯拉夫、奥地利帝国、普鲁士等存在的时代,因此在“价值”列中,当前国家在括号中。我怎样才能只保留括号中的国家,以便以后可以按国家对数据进行分组

Person          Birth Country
 Nick         Prussia (Germany)
 Mike             Germany
 Maria            Canada
 Mark          Russian Empire (Poland)         
 Sven             Germany
 Jarek            Poland   

我们可以使用
sub
提取
作为捕获组)后的非
字符,并在替换中指定捕获组的反向引用(
\\1

df1$Country <- sub(".*\\(([^)]+)\\).*", "\\1", df1$`Birth Country`)
df1$Country
#[1] "Germany" "Germany" "Canada"  "Poland"  "Germany" "Poland" 

您可以删除所有内容,直到打开括号和关闭括号(如果存在):


这很有效,谢谢阿克伦!你介意解释一下它是如何工作的吗?@NickA谢谢,我添加了一些描述。希望对你有用。
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))
gsub('.*\\(|\\)', '', df$Birth_Country)
#[1] "Germany" "Germany" "Canada"  "Poland"  "Germany" "Poland"