使用 gsub 从名称列中提取中间名
using gsub extract middle name from name column
我想从包含中间名和名字的列中提取中间名。基本上我想要第一个 space ex 之后的所有内容。 'Doe K' 来自第 2 行,但如果此人只有名字(不包括第 4-6 行)则没有条目。
数据如下:
nm <- read.table(text = "
names
1 'Jack Daniels'
2 'John Doe K'
3 'Kelly Susan H'
4 'Kevin'
5 'John'
6 'William'")
代码:
for (i in 1:nrow(nm))
nm[i,'middle_name'] <- gsub(".*? (.+)","\1",nm[i, 'names'])
预期结果:
names middle_name
1: Jack Daniels Daniels
2: John Doe K Doe K
3: Kelly Susan H Susan H
4: Kevin NA
5: John NA
6: William NA
> sub("\w+\b *", "", nm$names)
[1] "Daniels" "Doe K" "Susan H" "" "" ""
另一个选项:
library(stringr)
str_extract(nm$names, "(?<=\s).*?$")
[1] "Daniels" "Doe K" "Susan H" NA NA NA
我想从包含中间名和名字的列中提取中间名。基本上我想要第一个 space ex 之后的所有内容。 'Doe K' 来自第 2 行,但如果此人只有名字(不包括第 4-6 行)则没有条目。
数据如下:
nm <- read.table(text = "
names
1 'Jack Daniels'
2 'John Doe K'
3 'Kelly Susan H'
4 'Kevin'
5 'John'
6 'William'")
代码:
for (i in 1:nrow(nm))
nm[i,'middle_name'] <- gsub(".*? (.+)","\1",nm[i, 'names'])
预期结果:
names middle_name
1: Jack Daniels Daniels
2: John Doe K Doe K
3: Kelly Susan H Susan H
4: Kevin NA
5: John NA
6: William NA
> sub("\w+\b *", "", nm$names)
[1] "Daniels" "Doe K" "Susan H" "" "" ""
另一个选项:
library(stringr)
str_extract(nm$names, "(?<=\s).*?$")
[1] "Daniels" "Doe K" "Susan H" NA NA NA