如何在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

  abcd
1 1 To 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 

  abcd
1 1 To 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

  abcd
1 1 To 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

  abcd
1 1 To 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

  abcd
1 1 To 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 

  abcd
1 1 To 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
     abcd
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

   abcd
1 24 A 14 3
2 5 B 14 7
3 7 C 19 14
4 8 D 22 11

其他资源

如何在 R 中用字符串替换 NA
如何在R中全部估算缺失值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注