【发布时间】:2018-03-09 15:40:46
【问题描述】:
我需要构建一个函数,该函数使用均值替换连续/整数变量的缺失值,并使用模式替换分类变量的缺失值。
数据来自信用筛选数据集
X <- read.csv("https://archive.ics.uci.edu/ml/machine-learning-databases/credit-screening/crx.data", header = FALSE, na.strings = '?')
数据集的第一列是因子类型,第二列和第三列是数字.....
我建立了一个模式函数
mode_function <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
按预期工作。
我在数据集上使用的整体功能是
broken <- function(data){
for(i in 1:ncol(data)){
if(is.factor(data[,i])){
data[is.na(data[,i]),i] <- mode_function(data[,i])
}
else{
data[is.na(data[,i]),i] <- mean(data[,i], na.rm = TRUE)
}
}
return(data)
}
问题:我运行了这个函数,我的数据集中没有任何变化。我仍然有与函数运行前相同数量的缺失值。
函数外的这一行按预期工作。处理均值的代码也是如此。
data[is.na(data[,i]),i] <- mode_function(data[,i])
但是一旦我尝试使用我的函数来执行完全相同的操作,什么都没有发生。
【问题讨论】:
-
如果您提供reproducible example 和预期输出,则更容易提供帮助。