Sorting alphanumerically
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