“目标(y)未找到或它不是数字”-Package smbinning -R

时间:2017-08-02 13:10:17

标签: discretization

我正在尝试使用R软件中的smbinning包来找到某个变量的最佳分区。运行命令

result=smbinning(df=bop,y="FLAG_TARGET",x="VL_TOTL_REND",p=0.05)

返回以下错误消息:

  

“找不到目标(y)或它不是数字”

这里发生了什么? FLAG_TARGET是数字,我已经尝试将数据格式更改为整数,但它不起作用。

这个问题有解决方案吗?

1 个答案:

答案 0 :(得分:1)

这是因为bop不是数据框,您必须将bop转换为as.data.frame(bop)的数据框。如果你查看完整的smbinning代码(https://github.com/cran/smbinning/blob/master/R/smbinning.R#L490),就会有这个块

i=which(names(df)==y) # Find Column for dependant
j=which(names(df)==x) # Find Column for independant
if (!is.numeric(df[,i]))
{ 
    return("Target (y) not found or it is not numeric")
} 

将y设置为目标列名称,将x设置为预测器列名称后,尝试运行

i = which(names(bop) == y)
j = which(names(bop) == x)
is.numeric(bop[,i])

如果bop不是数据帧,它将返回FALSE。运行bop_dataframe <- as.data.frame(bop)并运行

is.numeric(bop_dataframe[,i])

它应该返回TRUE