R - 来自数据框的条件 Substr

R - Conditional Substr from dataframe

我需要根据开始和结束位置从列中进行 substr。开始和结束位置来自字符搜索。

例如,Dataframe 中的单列有 3 行:

'Bond, Mr. :James'
'Woman, Mrs. :Wonder'
'Hood, Mr. :Robin'

第 2 列的预期答案是:

'Mr.'
'Mrs.'
'Mr.'

我想为第 1 列提取“,”和“:”之间的所有字符串。

尝试gsub(".*, | :.*", "", myvec)

您可以使用 stringr 包执行常见的字符串操作,例如修剪、子字符串或提取模式:

library(stringr)
str_trim(str_sub(str_extract(x, ",[^:]*"), 2))
# [1] "Mr."  "Mrs." "Mr." 

另外:

str_extract(x, 'Mr(s?).')

@akrun 有一个建议可以帮助处理更多案例。

str_extract(myvec, '\S+(?=\s*:)')

通过指定 non-space 个字符后跟一个或多个空格和一个冒号,正则表达式模式将捕获各种标题和敬语。