2013-12-20 63 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)), ]