[R] Sorting alphanumerically

Chuck Cleland ccleland at optonline.net
Fri Feb 24 20:12:56 CET 2006


Does this help?

ID <- paste("g", sample(1:100, 100, replace=FALSE), sep="")

ID
   [1] "g88"  "g5"   "g79"  "g67"  "g43"  "g21"  "g66"
   [8] "g9"   "g38"  "g86"  "g12"  "g85"  "g74"  "g34"
  [15] "g52"  "g95"  "g6"   "g22"  "g70"  "g87"  "g7"
  [22] "g83"  "g63"  "g42"  "g26"  "g65"  "g16"  "g97"
  [29] "g76"  "g2"   "g90"  "g23"  "g15"  "g82"  "g75"
  [36] "g58"  "g17"  "g20"  "g96"  "g91"  "g31"  "g33"
  [43] "g48"  "g32"  "g93"  "g54"  "g49"  "g36"  "g81"
  [50] "g57"  "g27"  "g14"  "g62"  "g10"  "g80"  "g71"
  [57] "g28"  "g37"  "g89"  "g8"   "g94"  "g68"  "g56"
  [64] "g92"  "g41"  "g11"  "g4"   "g99"  "g55"  "g60"
  [71] "g18"  "g69"  "g19"  "g64"  "g39"  "g1"   "g53"
  [78] "g44"  "g24"  "g100" "g35"  "g3"   "g40"  "g47"
  [85] "g51"  "g46"  "g61"  "g45"  "g50"  "g25"  "g13"
  [92] "g73"  "g77"  "g30"  "g84"  "g78"  "g29"  "g59"
  [99] "g72"  "g98"

ID[order(as.numeric(substr(ID, start=2, stop=nchar(ID))))]
   [1] "g1"   "g2"   "g3"   "g4"   "g5"   "g6"   "g7"
   [8] "g8"   "g9"   "g10"  "g11"  "g12"  "g13"  "g14"
  [15] "g15"  "g16"  "g17"  "g18"  "g19"  "g20"  "g21"
  [22] "g22"  "g23"  "g24"  "g25"  "g26"  "g27"  "g28"
  [29] "g29"  "g30"  "g31"  "g32"  "g33"  "g34"  "g35"
  [36] "g36"  "g37"  "g38"  "g39"  "g40"  "g41"  "g42"
  [43] "g43"  "g44"  "g45"  "g46"  "g47"  "g48"  "g49"
  [50] "g50"  "g51"  "g52"  "g53"  "g54"  "g55"  "g56"
  [57] "g57"  "g58"  "g59"  "g60"  "g61"  "g62"  "g63"
  [64] "g64"  "g65"  "g66"  "g67"  "g68"  "g69"  "g70"
  [71] "g71"  "g72"  "g73"  "g74"  "g75"  "g76"  "g77"
  [78] "g78"  "g79"  "g80"  "g81"  "g82"  "g83"  "g84"
  [85] "g85"  "g86"  "g87"  "g88"  "g89"  "g90"  "g91"
  [92] "g92"  "g93"  "g94"  "g95"  "g96"  "g97"  "g98"
  [99] "g99"  "g100"

The idea is to drop the leading "g", convert to numeric, and then order.

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
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
> 

-- 
Chuck Cleland, Ph.D.
NDRI, Inc.
71 West 23rd Street, 8th floor
New York, NY 10010
tel: (212) 845-4495 (Tu, Th)
tel: (732) 452-1424 (M, W, F)
fax: (917) 438-0894




More information about the R-help mailing list