Вычисление баллов для группы на основе количества строк и внешней логики - PullRequest
0 голосов
/ 20 мая 2018

Я новичок в этом сайте, и это мой первый пост.

У меня есть набор данных, в котором я хотел бы рассчитать оценку для каждой группы, используя данные предыдущих строк, и применить логику.Я приведу базовый пример, и я предполагаю, что это поможет.

Данные:

S.no, Group, score1
1, GroupA, 1
2, GroupA, 0
3, GroupA, 1
4, GroupA, 1
5, GroupA, 1

Теперь я хотел бы вычислить свертку score1 для каждой строки.Для row5 я хочу сумму (score1 от row1 до 5) / 5, т.е. 4/5 Аналогично для row4, я хочу sum (score1 от row1 до 4) / 4, т.е. 3/4

Я хочу сделать то же самое для каждой строки для каждой группы.Я пока продемонстрировал это для GroupA.

Спасибо, Джон

1 Ответ

0 голосов
/ 20 мая 2018

Вам потребуется cumsum

library(dplyr)

df %>%
  group_by(Group) %>%
  mutate(score = cumsum(score1)/ row_number())

, что дает

    Sno Group  score1 score
1     1 GroupA      1 1    
2     2 GroupA      0 0.5  
3     3 GroupA      1 0.667
4     4 GroupA      1 0.75 
5     5 GroupA      1 0.8  

Пример данных:

df <- structure(list(Sno = 1:5, Group = c("GroupA", "GroupA", "GroupA", 
"GroupA", "GroupA"), score1 = c(1L, 0L, 1L, 1L, 1L)), class = "data.frame", row.names = c(NA, 
-5L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...