如何在 R 数据框的每一列中查找缺失值的百分比?


为了查找 R 数据框每一列中缺失值的百分比,我们可以结合使用 `colMeans` 函数和 `is.na` 函数。这将找到每一列中缺失值的平均值。之后,我们可以将输出乘以 100 以获得百分比。

查看以下示例,了解如何操作。

示例 1

以下代码片段创建一个示例数据框:

x1<-sample(c(NA,1,2),20,replace=TRUE)
x2<-sample(c(NA,5),20,replace=TRUE)
x3<-sample(c(NA,10,12),20,replace=TRUE)
df1<-data.frame(x1,x2,x3)
df1

输出

创建了以下数据框:

   x1   x2  x3
1  NA  NA  12
2   2   5  10
3   2   5  12
4   1   5  12
5   1   5  NA
6  NA   5  10
7   1  NA  10
8  NA   5  10
9   2  NA  12
10  2  NA  NA
11 NA  NA  NA
12 NA   5  12
13 NA  NA  10
14  1  NA  NA
15  2  NA  12
16  1   5  NA
17 NA   5  10
18  2   5  10
19 NA   5  12
20 NA   5  12

要在 df1 的每一列中查找 NA 的百分比,请将以下代码添加到上面的代码片段中:

x1<-sample(c(NA,1,2),20,replace=TRUE)
x2<-sample(c(NA,5),20,replace=TRUE)
x3<-sample(c(NA,10,12),20,replace=TRUE)
df1<-data.frame(x1,x2,x3)
(colMeans(is.na(df1)))*100

输出

如果您将以上所有代码作为单个程序执行,则会生成以下输出:

x1 x2 x3
45 40 25

示例 2

以下代码片段创建一个示例数据框:

y1<-sample(c(NA,rnorm(2)),20,replace=TRUE)
y2<-sample(c(NA,rnorm(2)),20,replace=TRUE)
df2<-data.frame(y1,y2)
df2

输出

创建了以下数据框:

     y1        y2
1  -1.407410   NA
2  -1.771819   NA
3  -1.771819   NA
4         NA  -0.05582021
5         NA   NA
6  -1.407410  -0.05582021
7         NA   NA
8         NA  -0.05582021
9  -1.407410   1.19697209
10 -1.407410   NA
11 -1.771819  -0.05582021
12        NA   NA
13 -1.771819   NA
14 -1.771819  -0.05582021
15        NA  -0.05582021
16 -1.407410   1.19697209
17 -1.771819  -0.05582021
18        NA   NA
19 -1.407410  -0.05582021
20 -1.407410   1.19697209

要在 df2 的每一列中查找 NA 的百分比,请将以下代码添加到上面的代码片段中:

y1<-sample(c(NA,rnorm(2)),20,replace=TRUE)
y2<-sample(c(NA,rnorm(2)),20,replace=TRUE)
df2<-data.frame(y1,y2)
(colMeans(is.na(df2)))*100

输出

如果您将以上所有代码作为单个程序执行,则会生成以下输出:

y1 y2
35 45

示例 3

以下代码片段创建一个示例数据框:

z1<-sample(c(NA,round(runif(2,1,5),2)),20,replace=TRUE)
z2<-sample(c(NA,round(runif(2,2,10),2)),20,replace=TRUE)
z3<-sample(c(NA,round(runif(2,5,10),2)),20,replace=TRUE)
df3<-data.frame(z1,z2,z3)
df3

输出

创建了以下数据框:

    z1    z2     z3
1  1.69  2.76    NA
2    NA  7.59    NA
3    NA  2.76  9.13
4  4.24    NA  9.13
5  1.69    NA  9.13
6    NA  2.76  8.85
7    NA  7.59    NA
8    NA    NA  9.13
9    NA  7.59    NA
10 1.69  2.76    NA
11 4.24  7.59  8.85
12 1.69    NA  8.85
13 4.24    NA    NA
14   NA    NA  8.85
15 4.24  7.59  9.13
16 4.24  7.59    NA
17 1.69  2.76  9.13
18   NA    NA  9.13
19 4.24  2.76  8.85
20 4.24    NA    NA

要在 df3 的每一列中查找 NA 的百分比,请将以下代码添加到上面的代码片段中:

z1<-sample(c(NA,round(runif(2,1,5),2)),20,replace=TRUE)
z2<-sample(c(NA,round(runif(2,2,10),2)),20,replace=TRUE)
z3<-sample(c(NA,round(runif(2,5,10),2)),20,replace=TRUE)
df3<-data.frame(z1,z2,z3)
(colMeans(is.na(df3)))*100

输出

如果您将以上所有代码作为单个程序执行,则会生成以下输出:

z1 z2 z3
40 40 40

更新于:2021年11月6日

9K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告