1) sub With sub
> sub(".*, ([^.]*)\\..*", "\\1", Name)
[1] "Mr" "Mrs" "Miss" "Mrs" "Mr" "Mr"
1a) sub variation This approach with gsub
also works:
> sub(".*, |\\..*", "", Name)
[1] "Mr" "Mrs" "Miss" "Mrs" "Mr" "Mr"
2) strapplyc or using strapplyc
in the gusbfn package it can be done with a simpler regular expression:
> library(gsubfn)
>
> strapplyc(Name, ", ([^.]*)\\.", simplify = TRUE)
[1] "Mr" "Mrs" "Miss" "Mrs" "Mr" "Mr"
2a) strapplyc variation This one seems to have the simplest regular expression of them all.
> library(gsubfn)
>
> sapply(strapplyc(Name, "\\w+"), "[", 2)
[1] "Mr" "Mrs" "Miss" "Mrs" "Mr" "Mr"
3) strsplit A third way is using strsplit
> sapply(strsplit(Name, ", |\\."), "[", 2)
[1] "Mr" "Mrs" "Miss" "Mrs" "Mr" "Mr"
Added additional solutions. Changed gsub
to sub
(although gsub
works too).