如果第一个单词还有多个单词,则在逗号后面的字符串中提取最后一个单词

时间:2015-06-30 21:27:51

标签: r string-matching stringr stringi

我的数据如下所示

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

我想从数据中提取国家/地区名称。棘手的部分是,如果我只提取最后一个单词,那么我将只有一个记录(法国)。

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

有关如何从此数据中提取国家/地区数据的任何想法?

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

2 个答案:

答案 0 :(得分:9)

您可以尝试sub

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

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

答案 1 :(得分:0)

stringi解决方案:

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删除国家/地区名称之前/之后的不必要空格。