📅  最后修改于: 2023-12-03 14:56:17.630000             🧑  作者: Mango
na
查找行在 R 中,有时候我们需要删除或替换数据框(data frame)中的缺失值。有时候,我们需要先查找哪些行(或列)存在缺失值。在 R 中使用 na
函数可以轻松地查找含有缺失值的行。
na
函数na
函数是 base
包自带的一个函数,其用途是判断一个向量、矩阵或数据框中哪些元素为缺失值(NA
)。具体而言,当一个元素为 NA
时,na
函数会返回 TRUE
;当一个元素不是 NA
时,na
函数会返回 FALSE
。
x <- c(1, 2, NA, 4)
na(x)
[1] FALSE FALSE TRUE FALSE
y <- matrix(c(1, 2, NA, 4), ncol = 2)
na(y)
[,1] [,2]
[1,] FALSE FALSE
[2,] FALSE FALSE
[3,] TRUE FALSE
[4,] FALSE FALSE
我们可以看到,在上面两个例子中,含有缺失值的元素返回了 TRUE
。
na
查找行为了使用 na
函数查找行,我们需要首先将数据框转置(transpose),这样每一行就变成了一列,每一列就变成了一行。接下来,我们可以使用 apply
函数沿着行方向应用 na
函数,这样返回的就是每一行是否含有缺失值的逻辑向量。最后,我们可以使用 which
函数返回逻辑向量中值为 TRUE
的下标,得到所有含有缺失值的行的下标。
# 产生一个数据框
df <- data.frame(A = c(1, 2, NA, 4),
B = c(NA, 5, 6, NA),
C = c(NA, 8, NA, NA))
# 将数据框转置
df_t <- t(df)
# 沿着行方向应用 na 函数
has_na <- apply(df_t, 2, na)
# 使用 which 函数找到含有缺失值的行
has_na_row <- which(rowSums(has_na) > 0)
has_na_row
[1] 2 3
上面的代码产生了一个数据框,含有三列和四行。我们首先使用 t
函数将数据框转置,然后使用 apply
函数沿着行方向应用 na
函数,得到了一个逻辑矩阵。接下来,我们使用 rowSums
函数对每一个行计算求和,得到了每一行含有缺失值的情况。最后,我们使用 which
函数找到含有缺失值的行的下标,结果为第二行和第三行。