我试图在数据框中条目的第一个数字和第一个单词之后,使用R中的正则表达式提取所有信息。
例如:
Header =
c("2006 Volvo XC70",
"2012 Ford Econoline Cargo Van E-250 Commercial",
"2012 Nissan Frontier",
"2012 Kia Soul 5dr Wagon Automatic")
我想写一个能够抓住 沃尔沃XC70 或 Econoline Cargo Van E-250商业 的模式>(一年后的所有内容和制作)来自我的"标题"列,以便我可以在我的数据框上运行该函数并创建一个新的"模型"柱。我无法弄清楚一个模式,它允许我跳过第一个整数字符串,然后是空格,然后是第一个字符串,然后是空格,然后抓住所有进行的操作。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:3)
只需使用sub。
sub("^\\d+\\s+\\w+\\s+", "", df$x)
示例:的
x <- "2012 Ford Econoline Cargo Van E-250 Commercial"
sub("^\\d+\\s+\\w+\\s+", "", x)
# [1] "Econoline Cargo Van E-250 Commercial"
答案 1 :(得分:2)
对于此任务,我将使用 XML 包获取基本列表:
library(XML)
doc <- xmlParse('http://www.fueleconomy.gov/ws/rest/ympg/shared/menu/make')
现在我们获取了XML数据,我们可以用汽车创建一个矢量:
mk <- xpathSApply(doc, '//value', xmlValue)
df$Makes <- sub(sprintf('\\d+ (?:%s) ', paste(mk, collapse='|')), '', df$Header)
输出:
## Header
# 1 2006 Volvo XC70
# 2 2012 Ford Econoline Cargo Van E-250 Commercial
# 3 2012 Nissan Frontier
# 4 2012 Kia Soul 5dr Wagon Automatic
## Makes
# 1 XC70
# 2 Econoline Cargo Van E-250 Commercial
# 3 Frontier
# 4 Soul 5dr Wagon Automatic