在R中提取字符串子集?

时间:2016-10-25 09:25:45

标签: r regex

假设我有一个类似

的数据框
Group            Score
Duck QuackDUC    0.343
Ten TopTEN       0.198
** -Men MaleMEN  0.350
y -Rural AreaRU  0.888
Maple TreeMAP    0.468
Man NavyMN       0.150

我想在每个Group中提取单词,这是空格''之后的字符串,以及所有大写字母中2-3字符串之前的单词。也就是说,我希望结果是

Group Score
Quack 0.343
Top   0.198
Male  0.350
Area  0.888
Tree  0.468
Navy  0.150

如何提取这些词?

1 个答案:

答案 0 :(得分:4)

我们可以使用sub。我们匹配零个或多个字符后跟一个或多个字母后跟一个或多个空格(\\s+),保留捕获组中的大写和后面的字母(即括号内(...)),以及将其替换为捕获组的后向引用(\\1)。

df1$Group <- sub(".*[A-Za-z]+\\s+([A-Z][a-z]+).*", "\\1", df1$Group)
df1$Group
#[1] "Quack" "Top"   "Male"  "Area"  "Tree"  "Navy"