如何在 R 数据框列中用中位数替换缺失值?


要使用中位数替换缺失值,我们可以使用与使用平均值替换缺失值相同的技巧。例如,如果我们有一个包含 x 和 y 列的数据框 df,其中两列都包含一些缺失值,那么可以使用中位数替换缺失值,例如对于 x 列:`df$x[is.na(df$x)]<-median(df$x,na.rm=TRUE)`,对于 y 列,我们可以执行相同的操作:`df$y[is.na(df$y)]<-median(df$y,na.rm=TRUE)`。

示例

 在线演示

考虑以下数据框:

set.seed(1112)
x1<-LETTERS[1:20]
x2<-sample(c(NA,rpois(19,8)),20,replace=TRUE)
df1<-data.frame(x1,x2)
df1

输出

 x1 x2
1 A 10
2 B 11
3 C 8
4 D 6
5 E 6
6 F NA
7 G 10
8 H 8
9 I 8
10 J 7
11 K NA
12 L 12
13 M 7
14 N 6
15 O 10
16 P 7
17 Q 7
18 R 8
19 S 11
20 T 4
median(df1$x2)
[1] 8

用剩余值的中间值替换 x2 中的缺失值:

df1$x2[is.na(df1$x2)]<-median(df1$x2,na.rm=TRUE)
df1

输出

x1 x2
1 A 10
2 B 11
3 C 8
4 D 6
5 E 6
6 F 8
7 G 10
8 H 8
9 I 8
10 J 7
11 K 8
12 L 12
13 M 7
14 N 6
15 O 10
16 P 7
17 Q 7
18 R 8
19 S 11
20 T 4

让我们来看另一个例子:

示例

ID<-1:20 Ratings<-sample(c(NA,1,2,3,4,5),20,replace=TRUE) df2<-data.frame(ID,Ratings) df2

输出

ID Ratings
1 1 3
2 2 1
3 3 1
4 4 4
5 5 1
6 6 4
7 7 2
8 8 3
9 9 2
10 10 2
11 11 3
12 12 5
13 13 5
14 14 1
15 15 4
16 16 1
17 17 4
18 18 NA
19 19 1
20 20 NA
median(df2$Ratings,na.rm=TRUE)
[1] 2.5

用剩余值的中间值替换 Ratings 中的缺失值:

示例

df2$Ratings[is.na(df2$Ratings)]<-median(df2$Ratings,na.rm=TRUE)
df2

输出

ID Ratings
1 1 3.0
2 2 1.0
3 3 1.0
4 4 4.0
5 5 1.0
6 6 4.0
7 7 2.0
8 8 3.0
9 9 2.0
10 10 2.0
11 11 3.0
12 12 5.0
13 13 5.0
14 14 1.0
15 15 4.0
16 16 1.0
17 17 4.0
18 18 2.5
19 19 1.0
20 20 2.5

更新于:2020年10月17日

2K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告