簡體   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