如何在 r 中估算缺失值(附示例)


通常,您可能希望将 R 中数据帧的列中的缺失值替换为该特定列的平均值或中位数。

要替换单列中的缺失值,可以使用以下语法:

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

并且要替换多列中的缺失值,可以使用以下语法:

 for(i in 1: ncol (df)) {
  df[ , i][ is.na (df[ , i])] <- mean(df[ , i], na.rm = TRUE )
}

本教程准确解释了如何在实践中使用这些功能。

示例1:用列平均值替换缺失值

下面的代码展示了如何用第一列的平均值替换数据框第一列中的缺失值:

 #create data frame
df <- data.frame(var1=c(1, NA, NA, 4, 5),
                 var2=c(7, 7, 8, 3, 2),
                 var3=c(3, 3, 6, 6, 8),
                 var4=c(1, 1, 2, 8, 9))

#replace missing values in first column with mean of first column
df$var1[ is.na (df$var1)] <- mean(df$var1, na.rm = TRUE )

#view data frame with missing values replaced
df

      var1 var2 var3 var4
1 1.000000 7 3 1
2 3.333333 7 3 1
3 3.333333 8 6 2
4 4.000000 3 6 8
5 5.000000 2 8 9

第一列的平均值为3.333 ,因此第一列中的缺失值被替换为3.333

下面的代码展示了如何用自己列的平均值替换每列中的缺失值:

 #create data frame
df <- data.frame(var1=c(1, NA, NA, 4, 5),
                 var2=c(7, 7, 8, NA, 2),
                 var3=c(NA, 3, 6, NA, 8),
                 var4=c(1, 1, 2, 8, 9))

#replace missing values in each column with column means
for(i in 1: ncol (df)) {
  df[ , i][ is.na (df[ , i])] <- mean(df[ , i], na.rm = TRUE )
}

#view data frame with missing values replaced
df

      var1 var2 var3 var4
1 1.000000 7 5.666667 1
2 3.333333 7 3.000000 1
3 3.333333 8 6.000000 2
4 4.000000 6 5.666667 8
5 5.000000 2 8.000000 9

示例2:用列中位数替换缺失值

下面的代码展示了如何用第一列的中值替换数据框第一列中的缺失值:

 #create data frame
df <- data.frame(var1=c(1, NA, NA, 4, 5),
                 var2=c(7, 7, 8, NA, 2),
                 var3=c(NA, 3, 6, NA, 8),
                 var4=c(1, 1, 2, 8, 9))

#replace missing values in first column with median of first column
df$var1[ is.na (df$var1)] <- median(df$var1, na.rm = TRUE )

#view data frame with missing values replaced
df

  var1 var2 var3 var4
1 1 7 NA 1
2 4 7 3 1
3 4 8 6 2
4 4 NA NA 8
5 5 2 8 9

第一列中的中值为4 ,因此第一列中的缺失值被替换为4

下面的代码展示了如何用自己列的中位数替换每列中的缺失值:

 #create data frame
df <- data.frame(var1=c(1, NA, NA, 4, 5),
                 var2=c(7, 7, 8, NA, 2),
                 var3=c(NA, 3, 6, NA, 8),
                 var4=c(1, 1, 2, 8, 9))

#replace missing values in each column with column medians
for(i in 1: ncol (df)) {
  df[ , i][ is.na (df[ , i])] <- median(df[ , i], na.rm = TRUE )
}

#view data frame with missing values replaced
df

  var1 var2 var3 var4
1 1 7 6 1
2 4 7 3 1
3 4 8 6 2
4 4 7 6 8
5 5 2 8 9

其他资源

如何在 R 中迭代列名
如何计算R中多列的平均值
如何对 R 中的特定列求和

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注