Как заменить несколько значений во фрейме данных с помощью dplyr


Вы можете использовать следующий базовый синтаксис для замены нескольких значений во фрейме данных в R с помощью функций из пакета dplyr :

library(dplyr)

df %>%
 mutate(var1 = recode(var1, 'oldvalue1' = 'newvalue1', 'oldvalue2' = 'newvalue2'), 
 var2 = recode(var2, 'oldvalue1' = 'newvalue1', 'oldvalue2' = 'newvalue2'))

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

Пример: замена нескольких значений с помощью dplyr

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

#create data frame
df <- data.frame(conf=c('East', 'East', 'West', 'West', 'North'),
 position=c('Guard', 'Guard', 'Guard', 'Guard', 'Forward'),
 points=c(22, 25, 29, 13, 18))

#view data frame
df

 conf position points
1 East Guard 22
2 East Guard 25
3 West Guard 29
4 West Guard 13
5 North Forward 18

Теперь предположим, что мы хотели бы заменить следующие значения во фрейме данных:

  • столбец «конф»:
  • Замените «Восток» на «Е».
  • Замените «Запад» на «W».
  • Замените «Север» на «N».
  • столбец «позиция»:
  • Замените «Страж» на «G».
  • Замените «Вперед» на «F»

Для этого мы можем использовать функции mutate() и recode() :

library(dplyr) 

#replace multiple values in conf and position columns
df %>%
 mutate(conf = recode(conf, 'East' = 'E', 'West' = 'W', 'North' = 'N'), 
 position = recode(position, 'Guard' = 'G', 'Forward' = 'F'))

 conf position points
1 E G 22
2 E G 25
3 W G 29
4 W G 13
5 N F 18

Обратите внимание, что каждое из значений в столбцах «conf» и «position» было заменено определенными значениями.

Также обратите внимание, что значения в столбце «баллы» не изменились.

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

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

Как перекодировать значения с помощью dplyr
Как заменить NA на ноль в dplyr
Как отфильтровать строки, содержащие определенную строку, с помощью dplyr