2015-06-30 21 views
5

bu verilere dayanarak ülke adı ayıklamak istiyorumÖzü son virgülden sonra bir dizede sözcük başka çoklu kelime ilk kelime varsa

location<- c("xyz, sss, New Zealand", "USA", "Pris,France") 
id<- c(1,2,3) 
df<-data.frame(location,id) 

kelimeleri aşağıdaki gibi nerede veriler var. Zor olan kısım, sadece son kelimeyi çıkarsam, o zaman sadece bir rekor (Fransa) alacağım.

library(stringr) 
df$country<- word(df$location,-1) 

Bu verinin ülke verilerini nasıl çıkaracağına dair herhangi bir fikir var mı?

id location      country 
    1 xyz, sss, New Zealand  New Zealand 
    2 USA       USA 
    3 Pris,France     France 

cevap

7

Deneyebilirsin sub

df$country <- sub('.*,\\s*', '', df$location) 
df$country 
#[1] "New Zealand" "USA"   "France" 

Ya

library(stringr) 
str_extract(df$location, '\\b[^,]+$') 
#[1] "New Zealand" "USA"   "France"  
+1

'açıklama [alt]:' '' df $ konum' yerine, herhangi bir karakterin yerine '' ', herhangi bir sayıda oluşan' '', virgülle, ardından herhangi bir sayı/boşluk olan '\\ s 'yazın. hiçbir şey ile '' ' 'açıklama [str_extract]:' 'df $ konum'dan, 1 veya daha fazla' + 'tüm kelimeleri' \\ b', bir [virgülle biten bir dizgede '[]' ^, '' $ 'dizesinin sonuna kadar. (yani temel olarak virgülden sonra tüm kelimeleri sağlayın) – Richard

0

stringi çözüm:

require(stringi) 
location<- c("xyz, sss, New Zealand", "USA", "Pris,France") 
stri_trim(stri_match_first_regex(location, "(^|,)([^,]*?)$")[,3]) 
## [1] "New Zealand" "USA"   "France" 

stri_trim önce/sonra gereksiz boşluklar kaldırır ülke adı.

İlgili konular