2015-11-16 47 views
1

我試圖在數據框中的第一個數字和一個條目的第一個單詞之後,使用R中的正則表達式提取所有信息。提取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廂式貨車E-250商用模式(年以後的一切,使)從我的「標題」列中的一個條目,以便我可以在我的數據框上運行該功能並創建一個新的「模型」列。我找不出一種模式,可以讓我跳過第一串整數,然後是一個空格,然後是第一串字符,然後是一個空格,然後抓住一切進行。

任何幫助,將不勝感激。謝謝!

+4

如果化妝有兩個詞,像阿斯頓·馬丁和奔馳? –

回答

3

只需使用子。

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" 
2

對於這個任務,我會使用XML包取一個基本的列表:

library(XML) 
doc <- xmlParse('http://www.fueleconomy.gov/ws/rest/ympg/shared/menu/make') 

現在,我們獲取的XML數據,我們可以用汽車製造一個載體:

mk <- xpathSApply(doc, '//value', xmlValue) 

最後,我將編譯模式和玩sprintfsub

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 
相關問題