#r
Вопрос:
У меня есть колонка «страна»:
- Россия
- Россия, США
- Великобритания, США, Южная Корея
- ЮЖНАЯ КОРЕЯ
Я хотел бы получить только последнюю страну в этой колонке:
- Россия
- США
- ЮЖНАЯ КОРЕЯ
- ЮЖНАЯ КОРЕЯ
Как я могу отделить эту колонку, чтобы вернуть только последнюю страну (она может включать 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