我有一个具有以下值的表:
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
我不一定需要将排名作为一行添加到表中,只要我可以推动排名并将其列在另一个命令上,等等。
有什么想法吗?
答案 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