it's a excellent solution. I am sorry I missed something in my
question.
the column b consists of not only number but also one letter after
"chr",
for example chrX, chrY. I want to put them after number but in the
order of
ASCII.
i.e. chr1<chr2<....<chr9<chr10<...<chr22<chrA<...chrX<chrY
if I have dataframe
dd <- data.frame(b = c("chr2", "chr1", "chrY", "chr13", "chrX"),
x = c("A", "D", "A", "C", "C"), y = c(8, 3, 9, 9,7),
z = c(1, 1, 1, 2, 8))
the expected result
b x y z
1 chr1 D 3 1
2 chr2 A 8 1
3 chr13 C 9 2
4 chrX C 7 8
5 chrY A 9 1
--- On *Thu, 20/5/10, Jorge Ivan Velez <jorgeivanve...@gmail.com>*
wrote:
From: Jorge Ivan Velez <jorgeivanve...@gmail.com>
Subject: Re: [R] sort a data.frame
To: "Yuan Jian" <jayuan2...@yahoo.com>
Cc: r-help@r-project.org
Received: Thursday, 20 May, 2010, 1:31 PM
Hi Yuan,
Try
dd[order(as.numeric(gsub("[^0-9]", "", dd$b))), ]
HTH,
Jorge
On Thu, May 20, 2010 at 8:28 AM, Yuan Jian <> wrote:
Hello,
I have a dataframe:
dd <- data.frame(b = c("chr2", "chr1", "chr15", "chr13"),
x = c("A", "D", "A", "C"), y = c(8, 3, 9, 9),
z = c(1, 1, 1, 2))
dd
b x y z
1 chr2 A 8 1
2 chr1 D 3 1
3 chr15 A 9 1
4 chr13 C 9 2
Now I want to sort them according column "b", but only its number is
considered:
b x y z
1 chr1 D 3 1
2 chr13 C 9 2
3 chr15 A 9 1
4 chr2 A 8 1
thanks
jian