Skip to main content

如何在 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 中替换数值,继续努力吧!