如何在 R 中使用 replace() 来替换值
作者 Prajwal CN
有了 R 中的 replace(),替换数值将会非常容易。 分析数据时,你可能在很多情况下必须处理数据集中存在的缺失值、负值或不准确的值。这些值也可能影响分析结果。 因此为了避免这些情况和结果的不准确,你可以使用 R 中的 replace() 函数来用适当的值替换错误的值。
R 语言中 replace() 的语法
R 语言中的 replace() 函数的语法非常简单,且很容易实现。它包括向量、索引向量和替换值,如下所示: replace(x, list, values)
- x = 有一些值的向量
- list = 可以是一个索引向量
- 值 = 替换值
替换向量中的一个值
本节将展示如何替换向量中的一个值。请执行下面的代码。 在下面的例子中,你可以清楚地观察和理解 replace() 函数的语法:第一个值是向量名称,然后是值的索引,最后是替换值。
df<- c('apple', 'orange','grape','banana')
df
"apple" "orange" "grape" "banana"
让我们替换掉列表中的第二项:
dy<-replace(df, 2,'blueberry')
dy
"apple" "blueberry" "grape" "banana"
现在让我们替换列表中的第四项:
dx<-replace(dy, 4, 'cranberry')
dx
"apple" "blueberry" "grape" "cranberry"
在 R 中使用 replace() 将 NA 值替换为 0
在本节中,我们将用 0 替换数据框中的 NA 值。以下是一个有 NA 值的输入数据框:

通过以下代码,用 0 替换 NA 值:
#定义数据框
df<-airquality
#用 0 替换 NA 值
df[is.na(df)]<-0
df

用数值的平均值替换 NA 值
在数据分析过程中,有时仅仅为了一个或多个 NA 值而清除整行或整列,并不是一个好主意。你并不能清除大部分的数值,这可能会导致低准确性和不好的结果。 为了克服这种问题,可以用其余数值的平均值取代 NA 值。事实证明,这种方法可以在不损失任何数据的情况下得到良好的准确性。 有 NA 值的输入数据集如下所示:

df<-airquality
df
df$Ozone[is.na(df$Ozone)]<-mean(df$Ozone, na.rm = T)
round(df, digits = 0)
下图显示 Ozone 列中的 NA 值被 Ozone 列中的平均值所取代:

用 NA 和 0 值替换数据框中的负值
本节将告诉你如何用 0 和 NA 替换数据框中的负值。 这样做是为了避免结果中的负值倾向。数据集中的负值会误导分析,产生错误的准确性。 下面的代码将说明如何替换:

#读取 csv 文件
df<-read.csv('negetivevalues.csv')
df
#用 0 替换负值
data<-replace(df$entry2, df$entry2<0,0)
data
Output=> 0 654 345 876 34 98 0 98 67 0 45 761
#用 NA 替换负值
data1<-replace(df$entry2,df$entry2<0,NA)
data1
Output=> NA 654 345 876 34 98 NA 98 67 NA 45 761
结语
使用 R 语言进行数据分析时,替换数据框中的数值是一个非常方便的选项。有了 R 中的 replace(),你可以在适当情况下替换 NA、0 和负值,清除大型数据集以供分析。 现在你已经学会了在 R 中替换数值,继续努力吧!