2014-09-03 9 views
-2

У меня есть таблица, которые имеют следующие значения:Ранжирование подмножества кадра данных в 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

Ранговая функция ранжируется от низкого до высокого, а знак минус меняет баллы. Используйте функцию 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 
+0

Благодаря это работает, однако в новом столбце Rank, я получаю дроби чисел (9.1, 9.2 и т.д.) –

+0

Вы можете добавить пример, показывающий фракционный рейтинг. – user3969377

+0

Я смог исправить проблему, используя следующее: ave (-data $ Score, data $ Location, FUN = function (x) rank (x, na.last = TRUE, ties.method = "first") –

Смежные вопросы