r - 使用 gsub 从名称列中提取中间名
问题描述
我想从包含中间名和名字的列中提取中间名。本质上,我想要第一个空格后的所有内容。第 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
解决方案
> sub("\\w+\\b *", "", nm$names)
[1] "Daniels" "Doe K" "Susan H" "" "" ""
推荐阅读
- java - Apache Wicket - DropDownChoice 实时搜索
- c# - 在 Unity3D 中刷新 ScrollView
- javascript - JS:将检查设置为 true 不起作用
- java - 为什么两个枚举与 == 运算符不兼容?
- python - 一个文本文件,在同一行中有 2 个由空格分隔的变量,其中的数据行以这种方式排列,如何将相应的数据添加在一起?
- excel - 基于不同列的vba条件格式
- python - 如何将 lat 和 long 添加回 Google 时区 API 的响应中?
- javascript - 删除 JSON 数组中特定索引的对象而不留下“null”(Node.js)
- javascript - 停止动画并在悬停时将所有圆圈对齐在同一条线上
- python - Scipy normal pdf评估给出了矛盾的值