如何在 R 数据框中查找每行的 NA 值频率?


由于列代表变量,我们经常在数据框的列中找到缺失值,但我们也可能希望找到案例的缺失值 (NA),以便我们可以基于案例特征而不是变量的分布来替换它们。在 R 中,我们可以使用 rowSums 和 apply 函数。

示例

考虑以下数据框:

 在线演示

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

输出

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

查找数据框 df1 中每行的 NA 值频率:

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

示例

df1$NA_frequency<-rowSums(apply(is.na(df1),2,as.numeric))
df1

输出

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

让我们来看另一个例子:

示例

 在线演示

y1<-sample(c(NA,1),20,replace=TRUE)
y2<-sample(c(NA,400),20,replace=TRUE)
y3<-sample(c(NA,35),20,replace=TRUE)
y4<-sample(c(NA,127),20,replace=TRUE)
df2<-data.frame(y1,y2,y3,y4)
df2

输出

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

查找数据框 df2 中每行的 NA 值频率:

示例

df2$NA_frequency<-rowSums(apply(is.na(df2),2,as.numeric))
df2

输出

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

更新于:2020年10月17日

413 次查看

启动您的职业生涯

完成课程获得认证

开始学习
广告