Например:
x1 <- data.frame("ID" = c(1:6),
"Position" = c("Left-Striker",
"Goalkeeper",
"Right-Striker",
"Striker",
"Centerback",
"Right-Midfield"))
возвращается:
ID Position
1 1 Left-Striker
2 2 Goalkeeper
3 3 Right-Striker
4 4 Striker
5 5 Centerback
6 6 Right-Midfield
Я хотел бы переименовать все факторы со словом «Striker» внутри фактора в «Striker» как имя фактора. Таким образом, кадр данных выглядит так:
ID Position
1 1 Striker
2 2 Goalkeeper
3 3 Striker
4 4 Striker
5 5 Centerback
6 6 Right-Midfield
Используя gsub, мы можем удалить первое слово, используя
x1$Position <- gsub('(^\\w+-)(Striker)','\\2',x1$Position)
(), используемый для группировки выражений (^\\w+-) первой группы выполните поиск одного или нескольких слов, а затем - (Striker) откомандированный групповой поиск для литерала Striker. \\2 означает отбрасывание первой группы и возвращение второй группы, которая является Striker.
Это также можно сделать с пакетом forcats:
forcats::fct_collapse(x1$Position, "Striker" = c("Left-Striker", "Striker", "Right-Striker"))
Использование regex
library(stringr)
x1$Position <- str_replace_all(x1$Position, "[:alpha:]+-?Striker", "Striker")
Из stringr
Существует ряд предварительно построенных классов, которые можно использовать внутри []: [: alpha:]: буквы.+ означает один или несколько. [F3] находится в вашей строке.