我想对data.table(dat)进行排序:

Rating  el  es
A   21.96   0.15
AA  26.25   0.13
AAA 34.07   0.06
B   0.84    0.07
BB  2.24    0.07
BBB 14.63   0.52
CCC 70.48   0.04


通过应用

dat[order(dat$Rating)]


我得到相同的结果。

是否可以基于列等级的任意顺序获得任意顺序?

像这样:

Rating  el  es
AAA 34,07   0,06
AA  26,25   0,13
A   21,96   0,15
BBB 14,63   0,52
BB  2,24    0,07
B   0,84    0,07
CCC 70,48   0,04


我努力了:

dat[order(dat[,1],levels = c("AAA","AA","A","BBB", "BB", "B", "CCC"))]


但我在表中得到的顺序与以前相同。

最佳答案

您需要先将Rating更改为factor,然后使用order

dat$Rating <- factor(dat$Rating, levels = c("AAA","AA","A","BBB", "BB", "B", "CCC"))

dat[order(dat$Rating), ]
# Rating    el   es
# 3    AAA 34.07 0.06
# 2     AA 26.25 0.13
# 1      A 21.96 0.15
# 6    BBB 14.63 0.52
# 5     BB  2.24 0.07
# 4      B  0.84 0.07
# 7    CCC 70.48 0.04


数据:

tt <- "Rating  el  es
A   21.96   0.15
AA  26.25   0.13
AAA 34.07   0.06
B   0.84    0.07
BB  2.24    0.07
BBB 14.63   0.52
CCC 70.48   0.04"

dat <- read.table(text = tt, header = T)

07-24 09:38
查看更多