2013-12-20 70 views
0

我想對「數據框」進行排序,而「名稱」列中的組名保持「收視率」列中的評分。例如,ne的最高評價爲13.62。我需要「ne」和「13.62」排序到第一個位置。下面是我的一些代碼:按多列對數據框排序

x <-t(nfl_data) 
y <- solve(x) 
myfun = function(i) round((1/13)*(sum(x[,i])) + mean(y[,i]), digits=2) 

ratings = numeric(32) 
for (i in 1:32){ 
    ratings[i] = myfun(i) 
} 

teams <- c('ari','atl','bal','buf','car','chi','cin','cle','dal', 
     'den','det','grn','hou','ind','jac','kc','mia','min','ne', 
     'no','nyj','nyg','oak','phi','pit','sd','sea','sf','stl', 
     'tb','tn','was') 

df <- data.frame(teams,ratings) 
df[with(df, order(teams, -ratings)), ] 

這裏是DF的輸出樣本:

 teams ratings 
1 ari -3.73 
2 atl 9.46 
3 bal 2.31 
4 buf -5.46 
5 car -0.69 
6 chi 7.57 
7 cin 6.69 
8 cle -4.23 

我得到相同的結果,如果我嘗試運行有序的數據幀代碼。我究竟做錯了什麼?

+1

只需通過'ratings'(即'DF [與(DF,順序(評級)),]')排序。你正在做的方式目前按字母順序排列爲'teams' – Jota

+0

使用'plyr'包中的'arrange'。 – Ramnath

回答

0

排序上的評分柱

df[with(df, order(-ratings)), ]