我需要构建一个函数,该函数使用mean来替换连续/整数变量的缺失值,并使用mode来替换分类变量的缺失值。
数据来自信用筛选数据集
public bool CurrentAccountDepositDetails(Current_Account_Deposit_Details current_Account_Deposit_Details)
{
int j = Convert.ToInt32(current_Account_Deposit_Details.Account_Number);
using (MyDbContext ctx = new MyDbContext(ConnectionString))
{
var foundAccount = ctx.Current_Account_Details.firstOrDefault(x=> x.Account_Number == j);
using (var dbContextTransaction = ctx.Database.BeginTransaction())
{
var acctDetails= ctx.Current_Account_Details.firstOrDefault(x=> x.Account_number =depositDetails.Account_Number );
acctDetails.Account_Balance == acctDetails.Account_Balance +current_Account_Deposit_Details.Amount ;
if(acctDetails!=null)
{
ctx.SaveChanges();
dbContextTransaction.Commit();
//do your deposits here similar to accdetails
//ctx.Current_Account_Dposit()storedprocedure if you included while creating db file
}
else
{
dbContextTransaction.Rollback();
return false;
}
}
}
}
数据集的第一列是因子类型,第二列和第三列是数字.....
我建立了一个模式功能
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)
}
但是一旦我尝试使用我的函数执行完全相同的操作,就不会发生任何事情。
答案 0 :(得分:0)
“没有发生任何事情”的最可能原因是未能将结果分配给R名称/符号。也许尝试这个:
maybe_res <- broken(data)
Chaeck:
> sapply(X, function(x) sum(is.na(x)))
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16
12 12 0 6 6 9 9 0 0 0 0 0 0 13 0 0
> sapply( broken(X), function(x) sum(is.na(x)))
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
我应该警告你,模式功能因提供可能不符合要求的答案而臭名昭着。