Re: [問題] 由大排到小分五群

看板R_Language作者 (metalheads)時間7年前 (2018/04/10 14:40), 編輯推噓1(100)
留言1則, 1人參與, 7年前最新討論串2/2 (看更多)
自問自答 這個問題是高百分位累積太多重複值 我在stackoverflow發現有個高手自己寫函數來解決 先做一個符合特性的向量 並想分5群 x=c(rep(10,20),runif(50,2,10)) findInterval(x,quantile(x,probs = 0:5/5), rightmost.closed=T,left.open = T ) 會發現只能分4群 hmisc的cut2也是 cut2(x,g=5) %>% as.numeric() 自製函數可以成功分出5群 ntile=function(x,n){ b <- x[!is.na(x)] q <- floor((n * (rank(b, ties.method = "first")-1)/length(b))+1) d <- rep(NA, length(x)) d[!is.na(x)] <- q return(d) } 大家可以試試看 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.72.53 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1523342429.A.21C.html

04/10 15:39, 7年前 , 1F
如果要保留原始資料分佈的特性,用cut( x, b=5 )較好
04/10 15:39, 1F
文章代碼(AID): #1Qp5nT8S (R_Language)
文章代碼(AID): #1Qp5nT8S (R_Language)