亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何通過對數據框中的列進行排序來快速形成組(四分位數,十分位數等)

如何通過對數據框中的列進行排序來快速形成組(四分位數,十分位數等)

POPMUISE 2019-10-15 16:07:51
我看到很多的問題和答案再order和sort。有什么東西可以將向量或數據幀分類為分組(如四分位數或十分位數)?我有一個“手動”解決方案,但是可能有一個經過小組測試的更好的解決方案。這是我的嘗試:temp <- data.frame(name=letters[1:12], value=rnorm(12), quartile=rep(NA, 12))temp#    name       value quartile# 1     a  2.55118169       NA# 2     b  0.79755259       NA# 3     c  0.16918905       NA# 4     d  1.73359245       NA# 5     e  0.41027113       NA# 6     f  0.73012966       NA# 7     g -1.35901658       NA# 8     h -0.80591167       NA# 9     i  0.48966739       NA# 10    j  0.88856758       NA# 11    k  0.05146856       NA# 12    l -0.12310229       NAtemp.sorted <- temp[order(temp$value), ]temp.sorted$quartile <- rep(1:4, each=12/4)temp <- temp.sorted[order(as.numeric(rownames(temp.sorted))), ]temp#    name       value quartile# 1     a  2.55118169        4# 2     b  0.79755259        3# 3     c  0.16918905        2# 4     d  1.73359245        4# 5     e  0.41027113        2# 6     f  0.73012966        3# 7     g -1.35901658        1# 8     h -0.80591167        1# 9     i  0.48966739        3# 10    j  0.88856758        4# 11    k  0.05146856        2# 12    l -0.12310229        1有沒有更好的方法(更清潔/更快/單線)?謝謝!
查看完整描述

3 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

我將為data.table其他所有使用該版本的人添加該版本(即,@ BondedDust的解決方案已翻譯data.table并削減了一點):


library(data.table)

setDT(temp)

temp[ , quartile := cut(value,

                        breaks = quantile(value, probs = 0:4/4),

                        labels = 1:4, right = FALSE)]

這比我一直做的更好(更干凈,更快):


temp[ , quartile := 

        as.factor(ifelse(value < quantile(value, .25), 1,

                         ifelse(value < quantile(value, .5), 2,

                                ifelse(value < quantile(value, .75), 3, 4))]

但是請注意,這種方法要求分位數是不同的,例如它將失敗rep(0:1, c(100, 1));在這種情況下該做什么是開放式的,所以我讓您自己決定。


查看完整回答
反對 回復 2019-10-15
  • 3 回答
  • 0 關注
  • 876 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號