【发布时间】:2018-07-18 18:05:56
【问题描述】:
我想从包含中间名和名字的列中提取中间名。本质上,我想要第一个空格后的所有内容。第 2 行中的“Doe K”,但如果人只有名字,则没有条目(不包括第 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
【问题讨论】:
-
尝试
nm$middle_name = sub("^\\S+\\s+(\\S.*)|.*", "\\1", nm$names),尽管您需要将空值替换为NA(nm$middle_name[nm$middle_name==""] <- "NA")。