📅  最后修改于: 2023-12-03 15:24:41.219000             🧑  作者: Mango
在 R 编程语言中,NA (Not Available) 是一种用于表示缺失值或无法计算的值的特殊类型。有时候我们需要对这些缺失值进行填充或者删除操作,所以本文将介绍如何在 R 中填充 NA 值。
首先我们需要创建一个包含 NA 值的数据集来进行操作,可以使用以下代码创建一个包含 10 个 NA 值的向量:
x <- rep(NA, 10)
如果要创建包含 NA 值的数据框,可以使用以下代码:
df <- data.frame(x = c(1:5, NA, 7:10), y = c(letters[1:4], NA, letters[6:10]))
使用函数 is.na()
可以检查数据集中是否存在 NA 值。如下:
is.na(x) # 检查向量中的 NA 值
is.na(df) # 检查数据框中的 NA 值
有时候需要将 NA 值填充为其他值,例如用 0 填充 NA 值。
使用 ifelse()
函数可以将 NA 值作为条件进行填充。如下:
x <- ifelse(is.na(x), 0, x)
df$x <- ifelse(is.na(df$x), 0, df$x)
df$y <- ifelse(is.na(df$y), "unknown", df$y)
tidyr
包中的 fill()
函数可以在数据框中填充连续的 NA 值。如下:
library(tidyr)
df <- data.frame(x = c(1:5, NA, NA, 8:10), y = c(letters[1:3], NA, NA, letters[6:8]), z = c("a", NA, NA, "b", "c", NA, "d", "e", "f", "g"))
fill(df, x, y) # 填充 x 和 y 列中的连续 NA 值
有时候需要将包含 NA 值的行或列从数据集中删除。
使用函数 complete.cases()
可以返回数据集中完整观测值的逻辑向量。我们可以使用该向量对数据集中包含 NA 值的行或列进行删除。如下:
df1 <- df[complete.cases(df), ] # 删除包含 NA 值的行
df2 <- df[, colSums(is.na(df)) == 0] # 删除包含 NA 值的列
使用 dplyr
包中的 filter()
函数和 is.na()
函数可以删除特定列中的 NA 值。如下:
library(dplyr)
df <- filter(df, !is.na(x)) # 删除 x 列中的 NA 值
在 R 编程过程中,处理 NA 值是一项常见任务。通过本文所介绍的方法,我们可以轻松地填充或删除 NA 值。在收集或处理数据时,我们应该时刻注意哪些变量包含 NA 值,并决定采取的处理方式。