在R中对数据帧的子集进行排序

时间:2014-09-03 20:27:46

标签: r

我有一个具有以下值的表:

School---- Location----Score

Bexley -----  OH ------ 4.9

Obetz ------ OH ------- 3.4

Harper ------ OH ------- 3.1

Willow ----- NY --------4.3

Sancus ----- NY --------4.0

Roberts ----- NY --------4.1

我试图导出排名数据或者实际添加一个列,该列显示每个每个学校的行数。所以像这样:

School ----- Location ----- Score --- Rank

Bexley -----  OH ------ 4.9 ------ 1

Obetz ------ OH ------- 3.4 ------ 2

Harper ------ OH ------- 3.1 ------3

Willow ----- NY --------4.3 ------- 1

Sancus ----- NY --------4.0 ------3

Roberts ----- NY --------4.1 ------2

我不一定需要将排名作为一行添加到表中,只要我可以推动排名并将其列在另一个命令上,等等。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

排名功能从低到高排名,使用减号可以反转得分。使用ave函数按组应用排名。

data <- read.table(text="School     Location    Score
Bexley       OH        4.9
Obetz        OH         3.4
Harper        OH         3.1
Willow       NY         4.3
Sancus       NY         4.0
Roberts       NY         4.1", 
stringsAsFactors =F,header=T)
data$Rank <- ave( -data$Score, data$Location, FUN=rank )
data
   School Location Score Rank
1  Bexley       OH   4.9    1
2   Obetz       OH   3.4    2
3  Harper       OH   3.1    3
4  Willow       NY   4.3    1
5  Sancus       NY   4.0    3
6 Roberts       NY   4.1    2