У меня есть dataframe, который содержит информацию о нескольких категориях и некоторых связанных переменных. Она имеет вид:Индексирование подгрупп по отсортированным позициям в R dataframe
ID category sales score
227 A 109 21
131 A 410 24
131 A 509 1
123 B 2 61
545 B 19 5
234 C 439 328
654 C 765 41
То, что я хотел бы сделать, это быть в состоянии ввести две новые колонки, salesRank
и scoreRank
, где найти индекс элемента в каждой категории, если бы они были заказаны sales
и score
, соответственно. Я могу решить общий случай, как это:
dF <- dF[order(-dF$sales),]
dF$salesRank<-seq.int(nrow(dF))
, но это не учитывает категорий и до сих пор я решил только это, разбивая dataframe. То, что я хочу, приведет к следующему:
ID category sales score salesRank scoreRank
227 A 109 21 3 2
131 A 410 24 2 1
131 A 509 1 1 3
123 B 2 61 2 1
545 B 19 5 1 2
234 C 439 328 2 1
654 C 765 41 1 2
Большое спасибо!
Perfect - спасибо. В качестве последующего вопроса можно ли группировать по нескольким категориям? Я посмотрю документацию dplyr, чтобы попытаться ответить и на это тоже :) – anthr
Да. вы можете сделать 'group_by (ID, category)' например. См. '? Group_by' –
Вы также можете использовать' rank', который будет учитывать связи в продажах/оценке более подходящим образом. – thelatemail