Есть ли способ создать переменную промежуточной суммы, которая суммирует текущие ставки для каждой строки? - PullRequest
0 голосов
/ 30 апреля 2020

Это часть моделируемого набора данных о поведении пользователей в онлайн-игре.

    UserID     Age Gender Shots
1 1324364       36   male  109
2 1324364       36   male   65
3 1324364       36   male  656
4 1324364       36   male  586
5 1324369       19   male    5
6 1324369       19   male   28

Мне нужна бегущая переменная, которая создает сумму количества снимков для каждого наблюдения, но для этого нужно перезапустить, когда новый UserID встречается так что-то вроде этого:

    UserID     Age Gender Shots TotalShots
1      64       36   male  109    109
2      64       36   male   65    174
3      64       36   male  656    830
4      64       36   male  586   1416
5      70       19   male    5      5
6      70       19   male   28     33

For reference, here is my data for you to copy/paste into your R.
UserID <- c(64, 64, 64, 64, 70, 70)
Age <- c(36, 36, 36, 36, 19, 19) 
Gender <- c("male", "male", "male", "male", "male", "male",)
Shots <- c(109, 65, 656, 586, 5, 28) 

Заранее спасибо!

1 Ответ

0 голосов
/ 02 мая 2020
df <- data.frame(UserID, Age, Gender, Shots)#turn your verctors into a data.frame we can work with  
df$TotalShots <- unlist( mapply(cumsum, split(x = df$Shots, f = df$UserID)), 
                            use.names = FALSE ) 

Примените функцию ?cumsum к объекту (вектору), который вы получите, разделив (?split) снимки df $ вдоль df $ UserID factor. Поскольку этот результат будет list - ?unlist, вы можете назначить его обратно в свой data.frame в качестве результата (столбец).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...