2017-10-28 23 views
0

私は並べ替えるデータフレームを持っています。しかし、並べ替えたい列は、文字と数字の組み合わせです。データフレームを1つの列で文字列と数字で並べ替えるR

df <- data.frame(a = sample(paste0("C", 1:20)), b = sample(LETTERS[1:26],20)) 
df[order(df$a),] 

注文は、これが私のC1、C10、C11、...、C19、C2、C20、...私はこのような列をソートするために変更する必要が何

を与えるのお気に入り: C1、C2、C3、...

ありがとうございます。 :-)

+0

必要なのは、 'ライブラリ(gtools); df [mixedorder(as.character(df $ a))、]' – akrun

答えて

1

このように数値/文字データを並べ替えることはよくある問題です。

library(stringr) 
df <- data.frame(a = sample(paste0("C", str_pad(c(1:20), 3, pad="0"))), 
       b = sample(LETTERS[1:26],20)) 
df[order(df$a),] 

     a b 
18 C001 R 
11 C002 C 
1 C003 O 
2 C004 Q 
10 C005 I 
... 

Demo

:1つのオプションは、ライブラリ stringrがここに助けることができる機能 str_padを持っている例3.テキストとしてではなく、パッドにすべてのエントリが同じ長さを有するようにゼロを持つすべてのエントリをソート続けることです
関連する問題