如何在 R 資料框中用每列的平均值替換 NA 值?


在全世界範圍內,人們教授估算缺失值的第一步是用相關的平均值替換它們。這意味著如果我們有一列包含一些缺失值,則用剩餘值的平均值替換它。在 R 中,我們可以透過使用該列的平均值替換包含缺失值的列並傳遞 na.rm = TRUE 引數來實現這一點。

請考慮以下資料框 -

示例

 線上演示

set.seed(121)
x<-sample(c(0:2,NA),20,replace=TRUE)
y<-sample(c(0:10,NA),20,replace=TRUE)
z<-sample(c(rnorm(2,1,0.40),NA),20,replace=TRUE)
df<-data.frame(x,y,z)
df

輸出

x y z
1 NA 1 1.525471
2 NA 10 1.525471
3 NA 0 NA
4 2 1 NA
5 NA 3 NA
6 0 4 1.525471
7 2 9 NA
8 0 5 NA
9 2 7 NA
10 2 6 1.296308
11 2 1 1.296308
12 0 NA 1.525471
13 NA 8 1.296308
14 0 5 NA
15 1 7 1.296308
16 NA 1 1.525471
17 0 1 NA
18 NA 5 1.525471
19 0 8 1.296308
20 1 1 1.296308

用剩餘值的平均值替換列 x 中的 NA -

示例

df$x[is.na(df$x)]<-mean(df$x,na.rm=TRUE)
df

輸出

  x y z
1 0.9230769 1 1.525471
2 0.9230769 10 1.525471
3 0.9230769 0 NA
4 2.0000000 1 NA
5 0.9230769 3 NA
6 0.0000000 4 1.525471
7 2.0000000 9 NA
8 0.0000000 5 NA
9 2.0000000 7 NA
10 2.0000000 6 1.296308
11 2.0000000 1 1.296308
12 0.0000000 NA 1.525471
13 0.9230769 8 1.296308
14 0.0000000 5 NA
15 1.0000000 7 1.296308
16 0.9230769 1 1.525471
17 0.0000000 1 NA
18 0.9230769 5 1.525471
19 0.0000000 8 1.296308
20 1.0000000 1 1.296308

用剩餘值的平均值替換列 y 中的 NA -

示例

df$y[is.na(df$y)]<-mean(df$y,na.rm=TRUE)
df

輸出

      x y z
1 0.9230769 1.000000 1.525471
2 0.9230769 10.000000 1.525471
3 0.9230769 0.000000 NA
4 2.0000000 1.000000 NA
5 0.9230769 3.000000 NA
6 0.0000000 4.000000 1.525471
7 2.0000000 9.000000 NA
8 0.0000000 5.000000 NA
9 2.0000000 7.000000 NA
10 2.0000000 6.000000 1.296308
11 2.0000000 1.000000 1.296308
12 0.0000000 4.368421 1.525471
13 0.9230769 8.000000 1.296308
14 0.0000000 5.000000 NA
15 1.0000000 7.000000 1.296308
16 0.9230769 1.000000 1.525471
17 0.0000000 1.000000 NA
18 0.9230769 5.000000 1.525471
19 0.0000000 8.000000 1.296308
20 1.0000000 1.000000 1.296308

用剩餘值的平均值替換列 z 中的 NA -

示例

df$z[is.na(df$z)]<-mean(df$z,na.rm=TRUE)
df

輸出

      x y z
1 0.9230769 1.000000 1.525471
2 0.9230769 10.000000 1.525471
3 0.9230769 0.000000 1.410890
4 2.0000000 1.000000 1.410890
5 0.9230769 3.000000 1.410890
6 0.0000000 4.000000 1.525471
7 2.0000000 9.000000 1.410890
8 0.0000000 5.000000 1.410890
9 2.0000000 7.000000 1.410890
10 2.0000000 6.000000 1.296308
11 2.0000000 1.000000 1.296308
12 0.0000000 4.368421 1.525471
13 0.9230769 8.000000 1.296308
14 0.0000000 5.000000 1.410890
15 1.0000000 7.000000 1.296308
16 0.9230769 1.000000 1.525471
17 0.0000000 1.000000 1.410890
18 0.9230769 5.000000 1.525471
19 0.0000000 8.000000 1.296308
20 1.0000000 1.000000 1.296308

更新於: 2020年10月18日

8K+ 閱讀量

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.