[R] Reshape2, melt, order of categorical variable and ggplot2
David Winsemius
dwinsemius at comcast.net
Mon Oct 8 08:57:35 CEST 2012
On Oct 7, 2012, at 1:40 PM, Stathis Kamperis wrote:
> Hello everyone,
>
> I have the following data frame:
>
>> df
> V1 V2 V3
> 1 bench1_10 16675 16678
> 2 bench1_10 16585 16672
> 3 bench1_100 183924 185563
> 4 bench1_100 169310 184806
> 5 bench1_300 514430 516834
> 6 bench1_300 510743 514062
> 7 bench1_500 880146 877882
> 8 bench1_500 880146 857359
> 9 bench1_1k 880146 1589600
> 10 bench1_1k 880146 1709990
>>
>
> I'd like to melt it by using id=V1:
>
>> mdf <- melt(df)
> Using V1 as id variables
>> mdf
> V1 variable value
> 1 bench1_10 V2 16675
> 2 bench1_10 V2 16585
> 3 bench1_100 V2 183924
> 4 bench1_100 V2 169310
> 5 bench1_300 V2 514430
> 6 bench1_300 V2 510743
> 7 bench1_500 V2 880146
> 8 bench1_500 V2 880146
> 9 bench1_1k V2 880146
> 10 bench1_1k V2 880146
> 11 bench1_10 V3 16678
> 12 bench1_10 V3 16672
> 13 bench1_100 V3 185563
> 14 bench1_100 V3 184806
> 15 bench1_300 V3 516834
> 16 bench1_300 V3 514062
> 17 bench1_500 V3 877882
> 18 bench1_500 V3 857359
> 19 bench1_1k V3 1589600
> 20 bench1_1k V3 1709990
>>
>
> My problem is that V1 in mdf has bench1_1k before bench1_500 and so
> on. This is a problem because when I try to plot the results with:
>
> p <- ggplot(mdf, aes(x=mdf$V1, y=mdf$value))
> p <- p + geom_point(aes(colour=factor(mdf$variable)))
> p
>
> I get bench1_1k in the horizontal axis before say bench1_500.
>
> Is there any way to have V1 in mdf "sorted" just like in df ? Or do I
> have to rename my files from bench1_1k to bench1_1000 and be done ?
In all likelihood you need to review the care and feeding of the factor beasts under your care. The alpha ordering is the default and that will put "bench1_1k" in the middle. You canchange the levels however.
?levels
--
David Winsemius, MD
Alameda, CA, USA
More information about the R-help
mailing list