我目前有一个我的R列向量日
Levels: D1 D10 D11 D12 D13 D14 D15 D16 D17 D18 D19 D2 D20 D21 D22 D23 D24 D25 D26 D27 D28 D29 D3 D30 D31 D4 D5 D6 D7 D8 D9
想将其重新定位到
Levels: D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 ... D31
我们如何使用relevel()
在R中执行此操作?非常感谢。
答案 0 :(得分:1)
虽然可以使用relevel
函数,但它会比需要的复杂得多。您只需使用factor
函数和gtools包中的mixedsort
函数即可完成此操作:
> library(gtools)
> tmp2 <- factor( sample( paste0("D", 1:25), 100, TRUE ) )
> tmp2
[1] D19 D2 D24 D4 D6 D13 D4 D16 D3 D13 D14 D3 D5 D23 D14 D3 D23 D9
[19] D4 D19 D15 D10 D19 D17 D5 D21 D15 D22 D1 D9 D13 D8 D25 D12 D6 D23
[37] D11 D13 D19 D12 D12 D11 D20 D11 D8 D13 D18 D25 D14 D15 D18 D23 D22 D1
[55] D4 D20 D13 D7 D3 D12 D9 D8 D10 D13 D2 D5 D1 D13 D14 D13 D4 D2
[73] D21 D9 D21 D24 D25 D21 D20 D11 D17 D2 D7 D12 D13 D6 D13 D21 D3 D3
[91] D15 D9 D7 D13 D25 D2 D2 D8 D10 D3
25 Levels: D1 D10 D11 D12 D13 D14 D15 D16 D17 D18 D19 D2 D20 D21 D22 ... D9
> tmp2 <- factor(tmp2, levels=mixedsort(levels(tmp2)))
> tmp2
[1] D19 D2 D24 D4 D6 D13 D4 D16 D3 D13 D14 D3 D5 D23 D14 D3 D23 D9
[19] D4 D19 D15 D10 D19 D17 D5 D21 D15 D22 D1 D9 D13 D8 D25 D12 D6 D23
[37] D11 D13 D19 D12 D12 D11 D20 D11 D8 D13 D18 D25 D14 D15 D18 D23 D22 D1
[55] D4 D20 D13 D7 D3 D12 D9 D8 D10 D13 D2 D5 D1 D13 D14 D13 D4 D2
[73] D21 D9 D21 D24 D25 D21 D20 D11 D17 D2 D7 D12 D13 D6 D13 D21 D3 D3
[91] D15 D9 D7 D13 D25 D2 D2 D8 D10 D3
25 Levels: D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16 D17 ... D25
>