Возвращает только последнее значение (страна) в столбце

#r

Вопрос:

У меня есть колонка «страна»:

  1. Россия
  2. Россия, США
  3. Великобритания, США, Южная Корея
  4. ЮЖНАЯ КОРЕЯ

Я хотел бы получить только последнюю страну в этой колонке:

  1. Россия
  2. США
  3. ЮЖНАЯ КОРЕЯ
  4. ЮЖНАЯ КОРЕЯ

Как я могу отделить эту колонку, чтобы вернуть только последнюю страну (она может включать 2 слова, например, Южная Корея), дополнительные страны должны быть удалены?

Я попытался разделить на 3 переменные, но, думаю, это будет слишком долго. Также я пытался использовать «str_split» и «unlist», но не могу написать правильный код.

df<-separate(df, country, into=c("v1","v2", "v3"), sep=",")

Ответ №1:

В base R , мы можем удалить подстроку с trimws

 trimws(df$country, whitespace = ".*,\s ")
[1] "Russia"      "USA"         "South Korea" "South Korea"
 

Или , если мы сделаем strsplit/str_split это , вывод будет a list , поэтому нам нужно выполнить цикл list , чтобы выбрать последний элемент

 sapply(strsplit(df$country, ",\s*"), tail, 1)
[1] "Russia"      "USA"         "South Korea" "South Korea"
 

данные

 df <- structure(list(country = c("Russia", "Russia, USA", "UK, USA, South Korea", 
"South Korea")), row.names = c(NA, -4L), class = "data.frame")
 

Ответ №2:

 library(dplyr)
library(stringr)

df <-
tibble(
  country = c("Russia","Russia, USA", "UK, USA, South Korea", "South Korea")
)  


df %>% 
  mutate(
   last_country = word(country,start = str_count(country,",")   1,sep = ", ")
  )


# A tibble: 4 x 2
  country              last_country
  <chr>                <chr>       
1 Russia               Russia      
2 Russia, USA          USA         
3 UK, USA, South Korea South Korea 
4 South Korea          South Korea