Сначала вы группируете данные по Player
, а затем сортируете по Season
, используя arrange
. Новый столбец, содержащий итоговую сумму игр, рассчитывается с cumsum
и добавляется к record
с mutate
. c(0,head(cumsum(G),-1) )
используется для отображения 0 в течение первого года игрока, а затем, используя head(cumsum(G) ,-1)
, следует текущая сумма игр, кроме последней.
Я изменил пример входных данных, чтобы сделать его больше похоже на ваш пример вывода. Код выглядит так:
record <- tribble(
~Season_End, ~Player, ~Pos, ~Age, ~G,
2001, "A.C.", "PF", 37, 82,
2002, "A.J.", "PG", 23, 45,
2001, "A.J.", "PG", 22, 33,
2003, "A.J.", "PG", 24, 2,
2017, "B.K.", "C", 24, 22,
2013, "B.K.", "PG", 26, 57,
2010, "B.K.", "PG", 23, 56 )
record <- record %>% group_by(Player) %>%
arrange( Season_End) %>%
mutate(total_games = c(0,head(cumsum(G),-1) ))
, что дает результат
Season_End Player Pos Age G total_games
<dbl> <chr> <chr> <dbl> <dbl> <dbl>
1 2001 A.C. PF 37 82 0
2 2001 A.J. PG 22 33 0
3 2002 A.J. PG 23 45 33
4 2003 A.J. PG 24 2 78
5 2010 B.K. PG 23 56 0
6 2013 B.K. PG 26 57 56
7 2017 B.K. C 24 22 113