Как заменить значения во фрейме данных в 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