按多列对数据帧进行排序

时间:2013-12-20 19:52:26

标签: r

我想对数据框进行排序,而“名称”列中的团队名称与“评分”列中的评分保持一致。例如,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 个答案:

答案 0 :(得分:0)

对评级栏进行排序

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