Я хотел бы создать новую переменную, которая:
- суммирует количество столбцов
- затем присваивает ранг группе в соответствии с наибольшим количеством в порядке возрастания
- и если два (или более) кумулятивных счета одинаковы, он присваивает их
следующий номер.
Вот тестовый тиббл:
df.test <- tibble(
"group" = c(1, 1, 2, 2, 2, 3, 3, 2, 2, 1, 4),
"score" = c(0, 2, 1, 3, 2, 2, 1, 2, 0, 0, 2)
)
и вот как бы я хотел, чтобы это выглядело:
# A tibble: 11 x 4
group score cum.score rank
<dbl> <dbl> <dbl> <dbl>
1 1 0 0 1
2 1 2 2 1
3 2 1 1 4
4 2 3 4 4
5 2 2 6 4
6 3 2 2 3
7 3 1 3 3
8 2 2 8 4
9 2 0 8 4
10 1 0 2 1
11 4 2 2 2
Обратите внимание, что группе 4 был присвоен ранг 2, поскольку она имела такой же результат, как и группе 1, которой был присвоен ранг 1.
Это самое близкое, что у меня есть (что не близко):
df.test %>%
group_by(group) %>%
mutate(cum.score = cumsum(score),
rank = last(cum.score))
но rank
просто присваивает им общее количество вместо фактического ранга.