我在将一系列名称解析为名字和姓氏时遇到问题。给出一个如下所示的名称列表:
names <- as.vector(c("Rep. Mike Grimm","House Committee on Energy and Commerce",
"Office of the Inspector General","Rep. J. Gresham Barrett","Rep. Mary Fallin"))
我如何为sub编写正则表达式代码,只提取列表中以“Rep。”开头的名字的名字和姓氏?因此,我认为我需要编写一个正则表达式代码,该代码只从以“Rep”开头的名称中提取第二个单词。并且只有第三个单词用于另一列,因为我想为名字创建一个列而为姓氏创建另一个列。我已经尝试了许多正则表达式代码,但找不到有效的代码。谢谢大家的帮助!
答案 0 :(得分:1)
这是你的想法吗?我不会将对象命名为&#34; name&#34;因为你将屏蔽功能&#34;名称&#34;
names.of <- as.vector(c("Rep. Mike Grimm","House Committee on Energy and Commerce",
"Office of the Inspector General","Rep. J. Gresham Barrett","Rep. Mary Fallin"))
names.rep<-grep("Rep",names.of,value=T )
gsub("Rep\\. ([A-Za-z]+)","\\1",names.rep)
答案 1 :(得分:1)
ans <- gsub('Rep. ', '', names[grep('Rep. ', names)])
First <- gsub('\\s\\w+$', '', ans)
Last <- gsub('.*?(\\w+$)', '\\1', ans)
df <- data.frame(First, Last)
df
# First Last
#1 Mike Grimm
#2 J. Gresham Barrett
#3 Mary Fallin