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

更新於:2020年10月17日

413 次檢視

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告