如何检查R数据帧中哪个值是NA?

要检查 R 数据帧中 NA 中的哪个值,我们可以使用 apply 函数和 is.na 函数。

例如,如果我们有一个名为 df 的数据框,其中包含一些 NA 值,那么我们可以使用下面提到的命令检查哪个值是 NA -

apply(df,2, function(x) is.na(x))

这将以 TRUE 和 FALSE 的逻辑形式返回数据帧。查看以下示例以了解其工作原理。

示例 1

以下代码段创建了一个示例数据框 -

x1<-sample(c(NA,round(rnorm(3),2)),20,replace=TRUE)
x2<-sample(c(NA,round(rnorm(3,10,2),2)),20,replace=TRUE)
x3<-sample(c(NA,round(rnorm(3,25,3.2),2)),20,replace=TRUE)
df1<-data.frame(x1,x2,x3)
df1

创建了以下数据框

      x1    x2 x3
1  -0.02  7.82 31.24
2  -0.50  9.21 31.24
3     NA    NA 21.65
4  -0.02  7.82    NA
5     NA    NA 31.24
6     NA  7.82 29.91
7  -0.02  7.82 29.91
8     NA    NA 29.91
9  -0.02  7.82 31.24
10  1.51    NA    NA
11 -0.02  9.21 29.91
12    NA    NA 31.24
13 -0.50  9.21 31.24
14 -0.02    NA 29.91
15  1.51  9.21 21.65
16 -0.50    NA 21.65
17  1.51    NA 31.24
18 -0.50  9.21    NA
19    NA  9.21 21.65
20  1.51 10.97    NA

要检查上面创建的数据框中 df1 中的哪些值是 NA,请将以下代码添加到上面的代码段中 -

x1<-sample(c(NA,round(rnorm(3),2)),20,replace=TRUE)
x2<-sample(c(NA,round(rnorm(3,10,2),2)),20,replace=TRUE)
x3<-sample(c(NA,round(rnorm(3,25,3.2),2)),20,replace=TRUE)
df1<-data.frame(x1,x2,x3)
apply(df1,2, function(x) is.na(x))
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

x1 x2 x3
[1,]  FALSE FALSE FALSE
[2,]  FALSE FALSE FALSE
[3,]  TRUE  TRUE  FALSE
[4,]  FALSE FALSE TRUE
[5,]  TRUE  TRUE  FALSE
[6,]  TRUE  FALSE FALSE
[7,]  FALSE FALSE FALSE
[8,]  TRUE  TRUE  FALSE
[9,]  FALSE FALSE FALSE
[10,] FALSE TRUE  TRUE
[11,] FALSE FALSE FALSE
[12,] TRUE  TRUE  FALSE
[13,] FALSE FALSE FALSE
[14,] FALSE TRUE  FALSE
[15,] FALSE FALSE FALSE
[16,] FALSE TRUE  FALSE
[17,] FALSE TRUE  FALSE
[18,] FALSE FALSE TRUE
[19,] TRUE  FALSE FALSE
[20,] FALSE FALSE TRUE

示例 2

以下代码段创建了一个示例数据框 -

y1<-sample(c(NA,rpois(3,1)),20,replace=TRUE)
y2<-sample(c(NA,rpois(2,5)),20,replace=TRUE)
y3<-sample(c(NA,rpois(2,2)),20,replace=TRUE)
df2<-data.frame(y1,y2,y3)
df2

创建了以下数据框

  y1  y2 y3
1  0  NA  4
2  1   6  4
3  1  NA  4
4  1  NA  4
5  NA NA NA
6  NA  6  4
7  0   6  4
8  1   6  4
9  0  NA  4
10 0   9 NA
11 1  NA NA
12 1  NA  4
13 0   9 NA
14 1   6  4
15 0   9  4
16 0   6  4
17 0   9  4
18 1   6  4
19 0   9 NA
20 1  NA NA

要检查上面创建的数据框中 df2 中的哪些值是 NA,请将以下代码添加到上面的代码段中 -

y1<-sample(c(NA,rpois(3,1)),20,replace=TRUE)
y2<-sample(c(NA,rpois(2,5)),20,replace=TRUE)
y3<-sample(c(NA,rpois(2,2)),20,replace=TRUE)
df2<-data.frame(y1,y2,y3)
apply(df2,2, function(x) is.na(x))
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

         y1   y2     y3
[1,]  FALSE TRUE  FALSE
[2,]  FALSE FALSE FALSE
[3,]  FALSE TRUE  FALSE
[4,]  FALSE TRUE  FALSE
[5,]  TRUE  TRUE  TRUE
[6,]  TRUE  FALSE FALSE
[7,]  FALSE FALSE FALSE
[8,]  FALSE FALSE FALSE
[9,]  FALSE TRUE  FALSE
[10,] FALSE FALSE TRUE
[11,] FALSE TRUE  TRUE
[12,] FALSE TRUE  FALSE
[13,] FALSE FALSE TRUE
[14,] FALSE FALSE FALSE
[15,] FALSE FALSE FALSE
[16,] FALSE FALSE FALSE
[17,] FALSE FALSE FALSE
[18,] FALSE FALSE FALSE
[19,] FALSE FALSE TRUE
[20,] FALSE TRUE TRUE