У меня проблема с последовательным обновлением рейтингов, и независимо от того, как я пытаюсь найти решение - или сам придумываю его, - у меня не получается.
Я пытаюсь проанализировать результаты эксперимента последовательного выбор, в котором участники должны были найти наилучший вариант (вариант с наивысшим рейтингом). Они были представлены с оценкой в каждом испытании.
У меня есть ID , заказ и рейтинг переменная для каждого выбора. ID - участник, рейтинг показывает, насколько хорош вариант (чем выше рейтинг, тем лучше), а order - номер испытания (в этом примере было 4 испытания)
ID rating order
1 4 1
1 3 2
1 5 3
1 2 4
2 3 1
2 5 2
2 2 3
2 1 4
Я хотел бы создать новую переменную под названием «current_rank», которая в основном является рейтингом рейтинга текущего выбора. Эта переменная всегда должна учитывать все предыдущие испытания и рейтинги, поэтому, например, для участника с ID"1" это будет:
Испытание 1: рейтинг = 4, что означает, что это лучший рейтинг, current_rank = 1
Trial 2: rating = 3, что означает, что это второй лучший рейтинг, current_rank = 2
Пробная версия 3: рейтинг = 5, что означает, что это лучший рейтинг на данный момент, что делает его новым номером 1, поэтому current_rank = 1
Пробная версия 4: рейтинг = 2, что означает, что это далеко не самое лучшее, current_rank = 4
Если бы я мог сделать это со всеми участниками и всеми вариантами, моя база данных должна выглядеть так:
ID rating order current_rank
1 4 1 1
1 3 2 2
1 5 3 1
1 2 4 4
2 3 1 1
2 5 2 1
2 2 3 3
2 1 4 4
Я мог бы успешно создать общую переменную ранжирования, такую как:
db %>%
arrange(ID, order) %>%
group_by(ID) %>%
mutate(ovr_rank = min_rank(desc(rating)))
Но моя цель - создать переменную, которая является чем-то вроде последовательного ранжирования. Это позволило бы увидеть, какое мнение участник мог сформировать относительно текущего рейтинга на основе предыдущих рейтингов, не зная, какими могут быть будущие рейтинги. Я пытался создать циклы или использовать функции применения, но пока не смог найти решение.
Любые идеи приветствуются!