2015-04-12 128 views
-2

我有一個數據框,我想根據列平均值重新排序。我想通過減少列重新排序意味着根據列重新排列數據幀的列意思是

SNR  SignalIntensity ID 
1 1.0035798  6.817374 109 
2 11.9438978  11.545993 110 
4 3.2894878  9.780420 112 
5 4.0170266  9.871984 113 
6 1.6310523  9.078186 114 
7 1.6405415  8.228931 116 
8 1.6625413  8.043536 117 
9 0.8489116  6.179346 118 
10 7.5312260  10.558180 119 
11 7.2832911  10.474533 120 
12 0.5732577  4.157294 121 
14 0.8149754  6.045174 124 

我用下面的代碼

means <- colMeans(df) ## to get mean 
df <- df[,order(means)] ## to reorder 

得到列meanorder,但我得到的列增加的平均,相反我利益。我應該怎麼做遞減列order重新排序意味着

預期輸出

ID SignalIntensity  SNR 
1 109  6.817374 1.0035798 
2 110  11.545993 11.9438978 
4 112  9.780420 3.2894878 
5 113  9.871984 4.0170266 
6 114  9.078186 1.6310523 
7 116  8.228931 1.6405415 
8 117  8.043536 1.6625413 
9 118  6.179346 0.8489116 
10 119  10.558180 7.5312260 
11 120  10.474533 7.2832911 
12 121  4.157294 0.5732577 
14 124  6.045174 0.8149754 
+2

我建議看看[這裏](http://stackoverflow.com/負值的order問題/ 1296646 /如何到排序-A-數據幀逐列式-R)。第一個Google幾乎擊中了任何「排序」/「順序」和「r」變體。 –

回答

1

的默認設置是decreasing=FALSE。我們可以改變,要TRUE

df[order(means, decreasing=TRUE)] 

或者得到的「手段」

df[order(-means)] 
+0

:) :)謝謝... –

+0

@AaghazHussain沒問題。您可以在'?order'中查看更多詳細信息。 – akrun

+1

順便說一下,使用'data.table'的開發版本,您現在可以通過引用*訂購數據幀,而無需轉換爲數據表。使用類似'setcolorder(df,order(-means))' –