2012-11-14 7 views
13

可能性の重複:
How to sort a dataframe by column(s) in RRの2番目の列でデータフレームを注文するにはどうすればよいですか?

いくつかのいずれかが私を助けることができれば私は思っていた、私は私が解決する簡単な問題であるべきと思ったものを持っています。

私は下の表があります。

SampleID   Cluster 

R0132F041p   1 

R0132F127   1 

R0132F064   1 

R0132F068p   1 

R0132F015   2 

R0132F094   3 

R0132F105   1 

R0132F013   2 

R0132F114   1 

R0132F014   2 

R0132F039p   3 

R0132F137   1 

R0132F059   1 

R0132F138p   2 

R0132F038p   2 

を、私は以下のような結果を得るためにクラスタによって/順序でソートしたいと思います:私は、次のRを試してみました

SampleID Cluster 

R0132F041p 1 

R0132F127 1 

R0132F064 1 

R0132F068p 1 

R0132F105 1 

R0132F114 1 

R0132F137 1 

R0132F059 1 

R0132F015 2 

R0132F013 2 

R0132F014 2 

R0132F138p 2 

R0132F038p 2 

R0132F094 3 

R0132F039p 3 

コード:

次の出力を得てください。数字1-15によって置き換えられて、これらの数字は何を表しているんSampleIDsが、私は?order()ページを読んでいるしているのはなぜ

1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 10 2 11 2 12 2 13 2 14 3 15 3 
は、しかし、これは)(次よりsort.listがよりよく説明するようです誰かが私にこれを助けてくれるなら、私は非常に感謝します。

答えて

10

短い答えは完璧でしたか?あなたはちょうどファイルの読み書きにいくつかの問題があります。

data<-read.table('Table.txt', header=TRUE,row.names=1,sep='\t') 

上記の行は、あなたのデータの罰金に読んでいるが、row.names=1は、行の名前として最初の列を使用するように言いました:あなたのコードを通って行きます。これで、SampleIDは独自の列ではなく行名になりました。この行を実行した直後にdataまたはhead(data)またはstr(data)と入力すると、これは明らかです。そのrow.names引数を省略すると、正しく読み込まれます。

data <- data.frame(data) 

read.table()は、データフレームを生成するので、あなたは、この上の行は必要ありません。あなたはstr(data)と同様にそれを見ることができます。

data <- data[order(data$Cluster),] 

上記の行は完璧です。ここで

write.table(data, file = 'OrderedTable.txt', append = TRUE, 
    quote=FALSE, sep = '\t', na ='NA', dec = '.', row.names = TRUE, 
    col.names = FALSE) 

あなたのファイルに列名を持っていない理由である引数col.names = FALSEが含まれています。あなたはまた必要/不要append=TRUEhelp(write.table)を見ると、「ファイルが文字列の場合のみ関連します」と表示されます。ここで最後の行を終了することなくファイルを書き込むように思われます。これは後でread.table()に文句を言う可能性があります。

結果の数字1〜15は、行番号のように見えます。結果のファイルをどのように見ているのか説明していないので、わかりません。おそらく、row.namesを解析しない方法でファイルを読み、行番号を表示しています。 SampleIDs列が行の名前に割り当てられていないことを確認したら、おそらく問題ありません。

+0

本当にありがとう、今は完璧に働いていて、本当にうまく説明されました、あなたはスターです。 – sinead

5

plyrパッケージのarrange機能をご覧ください。

arrange(data, Cluster) 
write.table(data, "ordered_data.txt") 
+1

提案をいただきありがとうございます。私はこのplyrパッケージとこの機能を見ていきます。有用かもしれない – sinead

+0

もっと速く、よりシンプルに、より良い。 – linello

関連する問題