如何找到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值的频率-

示例

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