#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"