来自for循环的R中的连续到离散切割四分位数
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 放回您的数据集中并适当命名。
我正在尝试创建一堆基于多列的四分位数切割列。例如,
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 放回您的数据集中并适当命名。