Удаление разных слов из вектора в R

#r #dataframe

#r #фрейм данных

Вопрос:

Допустим, у меня в R есть длинный фрейм данных, подобный этому:

 var1 lt;- c("Los Angeles - CA", "New York - NY", "Seattle - WA", "Los Angeles - CA", "New York - NY") var2 lt;- c(1, 2, 3, 4, 5)  df lt;- data.frame(var1, var2)  

Я хочу удалить «- состояние», чтобы получить такой результат, как:

 var1 lt;- c("Los Angeles", "New York", "Seattle", "Los Angeles", "New York") var2 lt;- c(1, 2, 3, 4, 5) df lt;- data.frame(var1, var2)  

Я не смог понять, как это сделать, так как у меня более 5000 строк, и я не могу использовать gsub, потому что мне пришлось бы указать каждую аббревиатуру штата, чтобы удалить ее. Я имею в виду, что существуют десятки шаблонов (-Состояние), которые я должен был бы определить априори, прежде чем использовать такие функции,

Есть ли простой способ удалить все «-состояния» из этого столбца сразу, используя какой-то шаблон разделения, который я еще не понял?

Комментарии:

1. Разве тире не создает шаблон разделения? transform(df,var1 = gsub("-.*","",var1)) Почему не работает?

Ответ №1:

Пара вариантов.

Самым простым было бы просто удалить последние 5 символов.

 library(stringr) str_sub(var1, 1L, -6L)  

Или, может быть, найдите шаблон и удалите его:

 gsub(" - \w $","",var1)  

или

 str_remove_all(var1, " - \w $")  

Все это даст вам один и тот же результат

 [1] "Los Angeles" "New York" "Seattle" "Los Angeles" "New York"   

Ответ №2:

 var1 lt;- c("Los Angeles - CA", "New York - NY", "Seattle - WA", "Los Angeles - CA", "New York - NY") gsub(" - [A-Z] $", "", var1) [1] "Los Angeles" "New York" "Seattle" "Los Angeles" "New York"