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

r programmingserver side programmingprogramming更新于 2025/4/9 1:07:17

要查找 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

相关文章