2014-04-05 31 views
0

我見過很多關於如何向框架添加排列列的帖子,但沒有關於如何創建變量,排名,以及來自排名程序的數據。我算了一下,心裏很不舒服,爲什麼不採取分級功能,從內變換data.frame功能和使用:如何在R中的數據框中對單元格進行排名而不將其添加到數據框

transform(df, 
      year.rank = ave(count, year, 
          FUN = function(x) rank(-x, ties.method = "first"))) 

Buuuut了試圖指望在一年內出現,因此不能適用於以我。我只是想從數據框中的單元格中獲取信息並對它們進行排名。我試圖做Kruskal-Wallis測試,但使用排列來找到p值(其中kruskal.test()不這樣做)。

我試着只是用rank()我的數據幀,但我得到這個:

Week2_NoAnti Week2_NaN3 Week2_TCS Week2_EDTA   <NA>   <NA> 
     1   4   6   10   11   12 
    <NA>   <NA>   <NA>   <NA>   <NA>   <NA> 
     2   3   7   5   8   9 

小於很有幫助。數據幀看起來像這樣:

Week2_NoAnti Week2_NaN3 Week2_TCS Week2_EDTA 
1  0.0000  0.7665 0.0756  0.1060 
2  0.0938  0.9222 0.0806  0.1289 
3  0.1243  1.0109 0.1283  0.1882 

如前所述,我想排列單元格。我還需要知道他們來自哪一列,以便我可以平均每列的等級,所以我不能將它們全部放入矢量中並對矢量進行排名。

感謝您的幫助!

編輯:實現了一個更好的方式來做數據框可能是有一列的值,另一列與標籤。目前遇到的困難使得頭()函數顯示六個以上結果...,但這裏是它表明:

 Groups agValues 
1 Week2_NoAnti 0.0000 
2 Week2_NoAnti 0.0938 
3 Week2_NoAnti 0.1243 
4 Week2_NaN3 0.7665 
5 Week2_NaN3 0.9222 
6 Week2_NaN3 1.0109 

SOLUTION:

對不起,浪費你的時間!上述組織使人們更容易:

ranks = rank(agValues) 
mean(ranks[Groups=="Week2_NoAnti"]) 
+0

你想每一列中的排名?我假設你的小組是NoAnti,NaN3,TCC,EDTA? – infominer

+0

我想排列所有列。我想到了一個更好的方法來做這個,就是我剛剛添加的編輯。對不起,只是有這樣的想法,它使我的數據變成一種類似於我在教科書中看到的問題的格式,希望能夠輕鬆地轉換他們的代碼。 – TurnipEntropy

+0

'head(x,n)'其中n是要顯示的行數,默認值是6 – infominer

回答

2

嘗試

rankmat=matrix(rank(as.vector(yourmatrix)),dim(yourmatrix)) 

在這裏,我們將您的矩陣爲載體再服用隊伍,將載體返回到正確的維度的矩陣。

0

對於剛發佈的編輯數據幀做

ranked.df <-df[order(df$agValues),] #decreasing = FALSE by default 
#and df is your data.frame 
相關問題