У меня есть фрейм данных:
DF <- data.frame(Observation = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17),
ID = c('A','A','B','C','D','D','B','B','B','B','A','A','A','B','D','D','C'),
Group = c('X1','X2','X1','X1','X2','X2','X2','X1','X1','X2','X2','X2','X2','X1','X2','X1','X1'),
Value = c(1,0,1,0,0,1,1,1,0,0,1,1,0,1,0,1,1))
Я бы хотел взять кумулятивную сумму по 'ID' (не сложно), но только на основе соответствующих последних значений 'Group', частью которой является каждый ID. Другими словами: для каждого «идентификатора» создайте кумулятивную сумму для всех последних доступных значений тех «групп», в которых присутствует идентификатор (может включать текущее значение в данной строке с учетом ссылки на последнее доступное значение).
Подробное объяснение: Пример для ID = A:
In (1
) ID
= A
относится к X1
in (1
) со значением = 1
, приводит к cum_sum = 1
.
In (2
) ID
= A
относится к X1
in (1
) со значением = 1
и X2
in (2
) со значением = 0
, приводит к cum_sum = 1
.
In (11
) ID
= A
относится к X1
in (1
) со значением = 1
и X2
in (11
) со значением = 1
, приводит к cum_sum = 2
.
In (12
) ID
= A
относится к X1
in (1
) со значением = 1
и X2
in (12
) со значением = 1
, приводит к cum_sum = 2
.
In (13
) ID
= A
относится к X1
in (1
) со значением = 1
и X2
in (13
) со значением = 0
, приводит к cum_sum = 1
.
Окончательный результат выглядит следующим образом.
DF_Result <- data.frame(Observation = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17),
ID = c('A','A','B','C','D','D','B','B','B','B','A','A','A','B','D','D','C'),
Group = c('X1','X2','X1','X1','X2','X2','X2','X1','X1','X2','X2','X2','X2','X1','X2','X1','X1'),
Value = c(1,0,1,0,0,1,1,1,0,0,1,1,0,1,0,1,1),
Cum_Sum = c(1,1,1,0,0,1,2,2,1,0,2,2,1,1,0,1,1))
Заранее большое спасибо.