繁体   English   中英

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

[英]Continuous to discrete cut quartile in R from for loop

我正在尝试创建一堆基于多列的四分位数削减的列。 例如,

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重新放入您的数据集中并适当命名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM