У меня есть датафрейм, подобный следующему
dataDF <- data.frame(
group = c(rep('a', 10), rep('b', 10)),
value = c(4, 4, 4, 3, 4, 3, 4, 3, 3, 3,
3, 1, 1, 1, 3, 1, 3, 2, 3, 1)
)
Я хочу узнать, сколько раз каждое значение появлялось в группе за последние 5 записей (или если у него еще не было 5 строк, тогдаобщее количество пока).
Таким образом, я бы в итоге получил:
group value number_l5
1 a 4 1
2 a 4 2
3 a 4 3
4 a 3 1
5 a 4 4
6 a 3 2
7 a 4 3
8 a 3 3
9 a 3 3
10 a 3 4
11 b 3 1
12 b 1 1
13 b 1 2
14 b 1 3
15 b 3 2
16 b 1 4
17 b 3 2
18 b 2 1
19 b 3 3
20 b 1 2
Итак, в первых трех строках значение равно 4 для каждой строки, поэтому совокупный счет равен 1,2,3.4-й ряд - это первый раз, когда мы видим 3, поэтому счет равен 1. К тому времени, как вы пройдете 5-й ряд, мы смотрим только на последние пять строк, поэтому в 7-м ряду мы считаем количество 4 от 3-го ряда до7, получая 3. Как только вы попадаете в строку 11, начинается новая группа 'b', и мы начинаем снова.
Хотелось бы делать с dplyr
и group_by
, если возможно
Спасибозаранее
РЕДАКТИРОВАТЬ: Первоначально попросил пропорции, чтобы сделать проще и, надеюсь, более ясным изменились, чтобы попросить номер.Извиняюсь за любую путаницу!