R语言 如何推算缺失值
在这篇文章中,我们将讨论如何在R编程语言中归纳缺失值。
在大多数数据集中,可能会有缺失值,这是因为没有输入或由于某些错误。用另一个值来代替这些缺失值被称为数据归因。有几种归因方法。常见的包括用该列/特征的平均值、最小值或最大值来替代。不同的数据集和特征将需要一种归因方法。例如,考虑到一个公司的销售业绩的数据集,如果特征损失有缺失值,那么用最小值来替换就比较合理了。
正在使用的数据集
代入一列
方法1 :用均值手动替代
让我们用这一整列数据的 平均值 来估算一列数据的缺失值,即marks1。
语法:
mean(x, trim = 0, na.rm = FALSE, …)
参数
- x – 任何对象
- trim – 在计算平均值之前要从x的每一端修剪的观测值
- na.rm – FALSE,去除NA值
例子: 估算缺失值
# create a adataframe
data <- data.frame(marks1 = c(NA, 22, NA, 49, 75),
marks2 = c(81, 14, NA, 61, 12),
marks3 = c(78.5, 19.325, NA, 28, 48.002))
# impute manually
datamarks1[is.na(datamarks1)] <- mean(data$marks1, na.rm = T)
data
输出
方法2 :使用Hmisc库,用中位值进行归集
使用Hmisc库中的函数impute( ),让我们用这一整列的 中值 来估算mark2列的数据。
例子: 归纳缺失值
# install and load the required packages
install.packages("Hmisc")
library(Hmisc)
# create a adataframe
data <- data.frame(marks1 = c(NA, 22, NA, 49, 75),
marks2 = c(81, 14, NA, 61, 12),
marks3 = c(78.5, 19.325, NA, 28,
48.002))
# fill missing values of marks2 with median
impute(data$marks2, median)
输出
用中值进行估算
方法3: 用一个特定的常数值进行估算
使用Hmisc库中的函数impute( ),让我们用一个常量值对数据中的mark2列进行估算。
例子: 剔除缺失值
# install and load the required packages
install.packages("Hmisc")
library(Hmisc)
# create a adataframe
data <- data.frame(marks1 = c(NA, 22, NA, 49, 75),
marks2 = c(81, 14, NA, 61, 12),
marks3 = c(78.5, 19.325, NA, 28,
48.002))
# impute with a specific number
# replace NA with 2000
impute(data$marks3, 2000)
输出
用一个特定的常数值进行估算
对整个数据集进行模拟
这可以通过使用apply( )函数将每一列的中位数与NA进行置换。
语法
apply(X, MARGIN, FUN, …)
参数
- X – 一个数组,包括一个矩阵
- MARGIN – 一个向量
- FUN – 要应用的函数
例子: 对整个数据集进行估算
# create a adataframe
data <- data.frame(marks1 = c(NA, 22, NA, 49, 75),
marks2 = c(81, 14, NA, 61, 12),
marks3 = c(78.5, 19.325, NA, 28,
48.002))
# getting median of each column using apply()
all_column_median <- apply(data, 2, median, na.rm=TRUE)
# imputing median value with NA
for(i in colnames(data))
data[,i][is.na(data[,i])] <- all_column_median[i]
data
输出