Як використовувати 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'),
                 dots=c(24, 26, 28, 14, 19, 12))

#view data frame
df

  name points
1 to 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
1Andy 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
1Andy 24
2 Bob 26
3 Bob 28
4 Chad 14
5 D 19
6 D 12

Зауважте, що отриманий кадр даних збігається з кадром попереднього прикладу.

Якщо ваш кадр даних навіть помірно великий, ви помітите, що ця функція набагато швидша за функцію gsub() .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в R:

Як використовувати функцію replace() у R
Як умовно замінити значення в кадрі даних R

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *