-2

I current have one of my R column vector day as

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

Would like to relevel it to

Levels: D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 ... D31

How do we do that in R with relevel()? Many thanks.

Simon O'Hanlon
  • 58,647
  • 14
  • 142
  • 184
pchankh
  • 1
  • 2
  • 2
    Welcome to SO! May I suggest you to please start by reading [this](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) and [this](http://meta.stackoverflow.com/help/how-to-ask). – Henrik Sep 07 '13 at 08:46
  • Do you mean that you just want the levels to show up in human-sensible order? – gung - Reinstate Monica Sep 07 '13 at 14:25

1 Answers1

1

While it is possible to use the relevel function, it would be a lot more complicated than needed. You can do this with just the factor function and the mixedsort function from the gtools package:

> 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
> 
Greg Snow
  • 48,497
  • 6
  • 83
  • 110