2014-05-10 96 views
-1

我想從下面的字符串矢量中提取單詞「COUNTY」。我希望這可以擴展到不同情況(上下)和可能出現的不同間距問題。我有以下的載體:從字符串矢量中提取特定字符

COUNTY=c("LAWRENCE COUNTY", "SALT LAKE", "OCEAN COUNTY", "JASPER COUNTY", 
"PIMA", "JACKSON COUNTY", "PORTAGE COUNTY", "SEBASTIAN COUNTY", 
"ORANGE", "BERGEN COUNTY") 

      COUNTY 
1 LAWRENCE COUNTY 
2   SALT LAKE 
3  OCEAN COUNTY 
4  JASPER COUNTY 
5    PIMA 
6 JACKSON COUNTY 
7 PORTAGE COUNTY 
8 SEBASTIAN COUNTY 
9   ORANGE 
10 BERGEN COUNTY 

我想這個向量看起來像這樣:

 COUNTY 
1  LAWRENCE 
2  SALT LAKE 
3  OCEAN 
4  JASPER 
5  PIMA 
6  JACKSON 
7  PORTAGE 
8  SEBASTIAN 
9  ORANGE 
10 BERGEN 

我基本上要剝離出的地方是說「縣」。

+0

我敢肯定,在寫你問題,以便爲您提供關於同一問題的問題提出了一些建議。有人問過很多次。 –

+0

有不少相似的建議。但我對正則表達式不夠熟悉,無法解釋我遇到的所有一次性問題(理查德很好地解決了這個問題)。我爲冗餘道歉。 –

+0

謝謝@ Mike.Gahan。不知道爲什麼這個帖子被擱置。我很清楚你想要做什麼。如果您使用更精確的說明和一些試用代碼更新帖子,他們可能會重新打開它。 –

回答

2

隨着gsub,如果情況是已知的,並且間距是已知的:

> gsub(' COUNTY', '', COUNTY, fixed = TRUE) 
## [1] "LAWRENCE" "SALT LAKE" "OCEAN"  "JASPER" "PIMA"  "JACKSON" 
## [7] "PORTAGE" "SEBASTIAN" "ORANGE" "BERGEN" 

情況不明:

> gsub(' county', '', COUNTY, ignore.case = TRUE) 
## [1] "LAWRENCE" "SALT LAKE" "OCEAN"  "JASPER" "PIMA"  "JACKSON" 
## [7] "PORTAGE" "SEBASTIAN" "ORANGE" "BERGEN" 

間距和情況下不知道:

> gsub('\\s+(county)', '', COUNTY, ignore.case = TRUE) 
## [1] "LAWRENCE" "SALT LAKE" "OCEAN"  "JASPER" "PIMA"  "JACKSON" 
## [7] "PORTAGE" "SEBASTIAN" "ORANGE" "BERGEN" 

替代地,這可以做到NE與strsplit

> unlist(strsplit(COUNTY, ' COUNTY')) 
## [1] "LAWRENCE" "SALT LAKE" "OCEAN"  "JASPER" "PIMA"  "JACKSON" 
## [7] "PORTAGE" "SEBASTIAN" "ORANGE" "BERGEN"