Я попытался создать переменную, которая представляет отставшую версию другой переменной относительно всего изменения переменной в группе.
Давайте использовать этот пример dataframe:
game_data <- data.frame(player = c(1,1,1,2,2,2,3,3,3), level = c(1,2,3,1,2,3,1,2,3), score=as.numeric(c(0,150,170,80,100,110,75,100,0)))
game_data
player level score
1 1 1 0
2 1 2 150
3 1 3 170
4 2 1 80
5 2 2 100
6 2 3 110
7 3 1 75
8 3 2 100
9 3 3 0
Я пробовал следующее, но пока работает переменная с задержкой, я не могу создать новую переменную, которая показывает отставание переменной относительно всего изменения для игрока:
result <-
+ game_data %>%
+ group_by(player) %>%
+ mutate(
+ lag_score = score - dplyr::lag(score, n=1, default = NA),
+ lag_score_relative = lag_score/sum(lag_score))
result
# A tibble: 9 x 5
# Groups: player [3]
player level score lag_score lag_score_relative
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 1 0 NA NA
2 1 2 150 150 NA
3 1 3 170 20 NA
4 2 1 80 NA NA
5 2 2 100 20 NA
6 2 3 110 10 NA
7 3 1 75 NA NA
8 3 2 100 25 NA
9 3 3 0 -100 NA
Например, для игрока 1 он должен быть в
Уровень 1: NA / 170 = NA
Уровень 2: 150/170
Уровень 3: 20/170
Заранее спасибо, надеюсь, кто-нибудь может помочь.