如何在 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

更新于: 2021年11月3日

15K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告