如何在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"