使用ifelse命令进行字符串解析

时间:2015-06-26 18:21:21

标签: regex r parsing

我在将一系列名称解析为名字和姓氏时遇到问题。给出一个如下所示的名称列表:

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”开头的名称中提取第二个单词。并且只有第三个单词用于另一列,因为我想为名字创建一个列而为姓氏创建另一个列。我已经尝试了许多正则表达式代码,但找不到有效的代码。谢谢大家的帮助!

2 个答案:

答案 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