似乎无法让 stringr() 恰好适合 mid-string 提取

Can't seem to get stringr() just right for mid-string extraction

我想从 Name 列中提取标题(先生、夫人、小姐),并将这些提取的标题导入新列 Title。相关数据如下:

snippet <- data_frame(Name=c('Braund, Mr. Owen Harris','Cumings, Mrs. John Bradley','Heikkinen, Miss. Laina'),Column=c('blah','blah,'blah'))

我已经查看了 ,但我一定遗漏了一些东西。

这是我能想到的最佳代码:snippet <- mutate(snippet, Title = str_extract(snippet $Name, "(?<=,)[^,]*(?=.)")。这确实添加了 Title 列,但该列中的所有值都是 NA。我的错误在哪里?谢谢。

也许这有帮助 - 在 'Name' 列中,, 之后有一个 space,因此我们使用正则表达式查找来匹配 non-whitespace 个字符(\S+) 在 , 和 space ((?<=, )) 之后并在 . 之前成功(. 是元字符,所以我们转义,否则它匹配任何字符)

library(dplyr)
library(stringr)
snippet <- snippet %>% 
  mutate(Title = str_extract(Name, "(?<=, )\S+(?=\.)"))

-输出

snippet
# A tibble: 3 × 3
  Name                       Column Title
  <chr>                      <chr>  <chr>
1 Braund, Mr. Owen Harris    blah   Mr   
2 Cumings, Mrs. John Bradley blah   Mrs  
3 Heikkinen, Miss. Laina     blah   Miss 

数据

snippet <- structure(list(Name = c("Braund, Mr. Owen Harris", 
"Cumings, Mrs. John Bradley", 
"Heikkinen, Miss. Laina"), Column = c("blah", "blah", "blah")), 
class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -3L))