2011-12-08 10 views
3

私の無知を許しますが、データフレームのソートに問題があります。データフレームがリストの順にソートされるようにソートするときは、c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")のような順序付きリストを指定したいと思います。この例ではRのリストを使用してソート順を指定するにはどうすればよいですか?

、私は

Day Present Count 
    Fri No 164 
    Fri Yes 131 
    Mon No 142 
    Mon Yes 174 
    Sat No 39 
    Sat Yes 26 
    Sun No 44 
    Sun Yes 39 
    Thu No 191 
    Thu Yes 192 
    Tue No 184 
    Tue Yes 214 
    Wed No 343 
    Wed Yes 255 

で始まり、

Day Present Count 
    Mon No 142 
    Mon Yes 174 
    Tue No 184 
    Tue Yes 214 
    Wed No 343 
    Wed Yes 255 
    Thu No 191 
    Thu Yes 192 
    Fri No 164 
    Fri Yes 131 
    Sat No 39 
    Sat Yes 26 
    Sun No 44 
    Sun Yes 39 

で終了したいと思い、私はperday[do.call(order, perday[c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")]),]を試みたが、私は "未定義の列は、選択した" GET。文字ベクトルにも14個のエントリがあると同じエラーが出るので、私はこの時点で本当に混乱しています。ここで

はdputです:

perday<-structure(list(dayofweek = c("Fri", "Fri", "Mon", "Mon", "Sat", 
"Sat", "Sun", "Sun", "Thu", "Thu", "Tue", "Tue", "Wed", "Wed" 
), Attended = structure(c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 
2L, 1L, 2L, 1L, 2L), .Label = c("No", "Yes"), class = "factor"), 
    nrow = c(164L, 131L, 142L, 174L, 39L, 26L, 44L, 39L, 191L, 
    192L, 184L, 214L, 343L, 255L)), .Names = c("dayofweek", "Attended", 
"nrow"), row.names = c(NA, -14L), class = "data.frame") 

答えて

8

あなたは

dayofweek Attended nrow 
3  Mon  No 142 
4  Mon  Yes 174 
11  Tue  No 184 
12  Tue  Yes 214 
13  Wed  No 343 
14  Wed  Yes 255 
9  Thu  No 191 
10  Thu  Yes 192 
1  Fri  No 164 
2  Fri  Yes 131 
5  Sat  No 39 
6  Sat  Yes 26 
7  Sun  No 44 
8  Sun  Yes 39 
+2

ああ、それらを要因にしてレベルを指定しなければなりません。これで、stringsAsFactors = FALSEをインポートするように設定し始めました。本当に何の要因があるのか​​を知り始めました。 –

+0

素晴らしい。これは人生を楽にします。 – saudic

0

知らん理由を与える

perday[order(factor(perday$dayofweek,levels=c(c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")))),] 

で "インライン" それを行うことができますが、それは秩序のを変えませんでした私のデータフレーム

代わりに、次のコードではなかった:あなたは自分のDFに行の元の順序を変更する必要があり

dfordered=df[c(1,2,3,9,5,6,8,10,11,4,7),] 

注意。

関連する問題