Как использовать gsub() в R для замены нескольких шаблонов


Функцию gsub() в R можно использовать для замены всех вхождений определенного шаблона в строке в R.

Чтобы заменить сразу несколько шаблонов, вы можете использовать вложенный оператор gsub() :

df$col1 <- gsub('old1', 'new1',
 gsub('old2', 'new2',
 gsub('old3', 'new3', df$col1)))

Однако гораздо более быстрым методом является функция stri_replace_all_regex() из пакета stringi , которая использует следующий синтаксис:

library (stringi)

df$col1 <- stri_replace_all_regex(df$col1,
 pattern=c('old1', 'old2', 'old3'),
 replacement=c('new1', 'new2', 'new3'),
 vectorize= FALSE )

В следующих примерах показано, как использовать каждый метод на практике.

Метод 1: заменить несколько шаблонов вложенным gsub()

Предположим, у нас есть следующий фрейм данных в R:

#create data frame
df <- data.frame(name=c('A', 'B', 'B', 'C', 'D', 'D'),
 points=c(24, 26, 28, 14, 19, 12))

#view data frame
df

 name points
1 A 24
2 B 26
3 B 28
4 C 14
5 D 19
6 D 12 

Мы можем использовать вложенный оператор gsub() для замены нескольких шаблонов в столбце имени :

#replace multiple patterns in name column
df$name <- gsub('A', 'Andy',
 gsub('B', 'Bob',
 gsub('C', 'Chad', df$name)))

#view updated data frame
df

 name points
1 Andy 24
2 Bob 26
3 Bob 28
4 Chad 14
5 D 19
6 D 12

Обратите внимание, что A, B и C в столбце имени заменены новыми значениями.

Способ 2: заменить несколько шаблонов на stringi

Гораздо более быстрый способ заменить несколько шаблонов — использовать функцию stri_replace_all_regex() из пакета stringi .

Следующий код показывает, как использовать эту функцию:

library (stringi)

#replace multiple patterns in name column
df$name <- stri_replace_all_regex(df$name,
 pattern=c('A', 'B', 'C'),
 replacement=c('Andy', 'Bob', 'Chad'),
 vectorize= FALSE )

#view updated data frame
df

 name points
1 Andy 24
2 Bob 26
3 Bob 28
4 Chad 14
5 D 19
6 D 12

Обратите внимание, что результирующий фрейм данных совпадает с фреймом из предыдущего примера.

Если ваш фрейм данных даже умеренно велик, вы заметите, что эта функция работает намного быстрее, чем функция gsub() .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в R:

Как использовать функцию replace() в R
Как условно заменить значения в R Data Frame

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.