Как заменить значения во фрейме данных в R (с примерами)


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

df[df == 'Old Value'] <- ' New value '

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

df[df == 'Old Value 1 ' | df == 'Old Value 2'] <- ' New value '

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

df['column1'][df['column1'] == 'Old Value'] <- ' New value '

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

Пример 1: замена определенного значения во всем фрейме данных

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

#create data frame
df <- data.frame(a = as. factor (c(1, 5, 7, 8)),
 b = c('A', 'B', 'C', 'D'),
 c = c(14, 14, 19, 22),
 d = c(3, 7, 14, 11))

#view data frame
df

 a b c d
1 1 A 14 3
2 5 B 14 7
3 7 C 19 14
4 8 D 22 11

#replace '14' with '24' across entire data frame
df[df == 14] <- 24

#view updated data frame
df 

 a b c d
1 1 A 24 3
2 5 B 24 7
3 7 C 19 24
4 8 D 22 11

Пример 2. Замена одного из нескольких значений во всем фрейме данных

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

#create data frame
df <- data.frame(a = as. factor (c(1, 5, 7, 8)),
 b = c('A', 'B', 'C', 'D'),
 c = c(14, 14, 19, 22),
 d = c(3, 7, 14, 11))

#view data frame
df

 a b c d
1 1 A 14 3
2 5 B 14 7
3 7 C 19 14
4 8 D 22 11

#replace '14' and '19' with '24' across entire data frame
df[df == 14 | df == 19] <- 24

#view updated data frame
df

 a b c d
1 1 A 24 3
2 5 B 24 7
3 7 C 24 24
4 8 D 22 11

Пример 3: заменить значение в определенном столбце фрейма данных

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

#create data frame
df <- data.frame(a = as. factor (c(1, 5, 7, 8)),
 b = c('A', 'B', 'C', 'D'),
 c = c(14, 14, 19, 22),
 d = c(3, 7, 14, 11))

#view data frame
df

 a b c d
1 1 A 14 3
2 5 B 14 7
3 7 C 19 14
4 8 D 22 11

#replace '14' in column *c* with '24'
df['c'][df['c'] == 14] <- 24

#view updated data frame
df 

 a b c d
1 1 A 24 3
2 5 B 24 7
3 7 C 19 14
4 8 D 22 11

Пример 4: замена значений факторной переменной во фрейме данных

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

#create data frame
df <- data.frame(a = as. factor (c(1, 5, 7, 8)),
 b = c('A', 'B', 'C', 'D'),
 c = c(14, 14, 19, 22),
 d = c(3, 7, 14, 11))

#attempt to replace '1' with '24' in column *a*
df['a'][df['a'] == 1] <- 24

Warning message:
In `[<-.factor`(`\*tmp\*`, thisvar, value = 24) :
 invalid factor level, NA generated
 a b c d
1 <NA> A 14 3
2 5 B 14 7
3 7 C 19 14
4 8 D 22 11

Чтобы избежать этого предупреждения, вам нужно сначала преобразовать факторную переменную в числовую переменную:

#convert column *a* to numeric
df$a <- as. numeric (as. character (df$a))

#replace '1' with '24' in column *a*
df['a'][df['a'] == 1] <- 24

#view updated data frame
df

 a b c d
1 24 A 14 3
2 5 B 14 7
3 7 C 19 14
4 8 D 22 11

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

Как заменить NA строками в R
Как заменить пропущенные значения в R

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