[R] Sorting alphanumerically
Marc Schwartz (via MN)
mschwartz at mn.rr.com
Fri Feb 24 20:10:17 CET 2006
On Fri, 2006-02-24 at 12:54 -0600, mtb954 mtb954 wrote:
> I'm trying to sort a DATAFRAME by a column "ID" that contains
> alphanumeric data. Specifically,"ID" contains integers all preceeded
> by the character "g" as in:
>
> g1, g6, g3, g19, g100, g2, g39
>
> I am using the following code:
>
> DATAFRAME=DATAFRAME[order(DATAFRAME1$ID),]
>
> and was hoping it would sort the dataframe by ID in the following manner
>
> g1, g2, g3, g6, g19, g39, g100
>
> but it doesn't sort at all. Could anyone point out my mistake?
>
> Thank you.
>
> Mark
The values are being sorted by character based ordering, which may be
impacted upon by your locale.
Thus, on my system, you end up with something like the following:
> ID[order(ID)]
[1] "g1" "g100" "g19" "g2" "g3" "g39" "g6"
What you can do, based upon the presumption that the prefix of 'g' is
present as you describe above, is:
> ID[order(as.numeric((gsub("g", "", ID))))]
[1] "g1" "g2" "g3" "g6" "g19" "g39" "g100"
What this does is to use gsub() to strip the 'g' and then order by
numeric value.
HTH,
Marc Schwartz
More information about the R-help
mailing list