从 for 循环开始的 R 中的连续到离散切割四分位数



我正在尝试创建一堆基于多个列的四分位数切割列。 例如

dataset[,412:422] <- NA
for( i in 50:60){
for(j in 412:422){
     dataset[,j] <- cut(dataset[,i], 
                                      breaks=unique(quantile(dataset[,i],probs=seq(.1,1,by=.1),na.rm=T)), 
                                      include.lowest=TRUE)
    } 
}

我想根据从第 50 列到 60 的连续变量的分箱创建新的列 412 到 422。 当我尝试执行上述代码时,我得到的只是

   V412    V413    V414    V415    V416    V417    V418    V419 V420    V421    V422
(56,64] (56,64] (56,64] (56,64] (56,64] (56,64] (56,64] (56,64] (56,64] (56,64] (56,64]
 <NA>    <NA>    <NA>    <NA>    <NA>    <NA>    <NA>    <NA>  <NA>    <NA>    <NA>

......
<NA>    <NA>    <NA>    <NA>    <NA>    <NA>    <NA>    <NA> <NA>    <NA>    <NA>

不确定我哪里出错了。任何帮助将不胜感激!!

这个问题更多的是关于数据的组织和整洁。有很多方法可以做到这一点。

我建议将要装箱的数据分离到它自己的data.frame中。

x=dataset[, 50:60]

然后,通过使用所需的参数创建一个函数并使用apply将这些列装箱到新列中

功能:

mycut=function(x)  cut(x, 
                       breaks=unique(quantile(x,probs=seq(.1,1,by=.1),na.rm=T)), 
                       include.lowest=TRUE)

应用:

xbin=apply(x,2,mycut)

然后将 xbin 放回数据集并适当地命名它。

相关内容

  • 没有找到相关文章

最新更新