22

重複の可能性:
Rの列でデータフレームを並べ替える方法

誰かが私を助けてくれるのではないかと思っていたのですが、簡単に解決できる問題だと思っていました。

以下の表があります。

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

そして、クラスターごとに並べ替え/並べ替えて、次のような結果を取得したいと思います。

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

私は次のRコードを試しました:

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

data <- data.frame(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)

次の出力を取得します。

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

SampleIDが1〜15の数字に置き換えられた理由と、これらの数字は何を表しているのか、私はページを読みましたが、これはorder()よりもsort.list?order()を説明しているようです。ありがたい。

4

2 に答える 2

12

簡単に言えば、あなたはそれを完璧にやったということです。ファイルの読み取りと書き込みに問題があります。コードを確認する:

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

上記の行はデータを正常に読み込んでいますがrow.names=1、最初の列を行の名前として使用するように指示されています。したがって、SampleIDは、独自の列ではなく行名になります。この行を実行した直後に、またはdataを入力した場合、これは明確になっているはずです。そのrow.names引数を省略するだけで、正しく読み取られます。head(data)str(data)

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=TRUE。を見るとhelp(write.table)、「ファイルが文字列の場合にのみ関連する」ことがわかります。ここでは、最後の行を終了せずにファイルを書き込むように見えます。これにより、後でread.table()文句を言う可能性があります。

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

于 2012-11-14T14:27:10.447 に答える
5

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

arrange(data, Cluster)
write.table(data, "ordered_data.txt")
于 2012-11-14T13:18:11.540 に答える