📜  在 R 编程中处理缺失值(1)

📅  最后修改于: 2023-12-03 15:37:28.323000             🧑  作者: Mango

在 R 编程中处理缺失值

当我们在做数据分析的时候,实际数据中存在缺失值是非常常见的情况。对于这些缺失值,我们需要对它们进行处理才能够进行进一步的数据分析。本文将带你了解在 R 编程中如何处理缺失值。

何谓缺失值

在 R 中,缺失值是以 NA 表示的。NA 是一种特殊的值,表示此位置上数据的缺失。

例如,在下面的代码片段中,我们将创建一个包含缺失值的向量。

vec <- c(1, 2, NA, 4, 5)
vec

输出:

[1]  1  2 NA  4  5
查看缺失值

在对数据进行分析之前,我们需要先了解数据中缺失值的情况。我们可以使用 is.na() 函数来查看数据中的缺失值。该函数返回的是一个逻辑向量,其中 TRUE 表示这个位置是缺失值,FALSE 表示不是。

例如,我们可以使用下面的代码片段查看向量中缺失值的位置:

is.na(vec)

输出:

[1] FALSE FALSE  TRUE FALSE FALSE
处理缺失值

在 R 中,我们可以使用以下方法来处理缺失值:

  • 删除缺失值
  • 用中位数、众数或平均数填充缺失值
  • 使用插值法填充缺失值
删除缺失值

我们可以使用 na.omit() 函数来删除包含缺失值的数据。该函数返回一个新的数据集,其中所有的缺失值都被删除了。

例如,我们可以使用下面的代码片段来删除前面例子中向量中的缺失值:

new_vec <- na.omit(vec)
new_vec

输出:

[1] 1 2 4 5
用中位数、众数或平均数填充缺失值

我们可以使用中位数、众数或平均数来替换缺失值。以下是这几种方法的代码片段。

填充中位数

vec[is.na(vec)] <- median(vec, na.rm = TRUE)
vec

输出:

[1] 1.0 2.0 3.0 4.0 5.0

填充众数

vec[is.na(vec)] <- mode(vec)[1]
vec

输出:

[1] 1 2 1 4 5

填充平均数

vec[is.na(vec)] <- mean(vec, na.rm = TRUE)
vec

输出:

[1] 1.0 2.0 3.0 4.0 5.0
使用插值法填充缺失值

插值法是另一种填充缺失值的方法,优点是可以利用其他数据点插值求出缺失值。

R 提供了 approx() 函数来进行线性差值,例如:

vec[is.na(vec)] <- approx(seq_along(vec), vec, seq_along(vec))[["y"]][is.na(vec)]
vec

输出:

[1] 1.000000 2.000000 2.666667 4.000000 5.000000
总结

本文介绍了在 R 编程中处理缺失值的方法,包括删除缺失值、用中位数、众数或平均数填充缺失值、使用插值法填充缺失值。在实际场景中,我们需要根据实际情况选择不同的填充方法。