如何在R中使用relevel

时间:2013-09-07 07:47:44

标签: r

我目前有一个我的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中执行此操作?非常感谢。

1 个答案:

答案 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
>