Я пытаюсь создать 4 счетчика, как до события, так и после события, основываясь на значении события.Вот пример данных:
pre_counter_A pre_counter_BC event post_counter_A post counter_BC
0 0 A 1 0
1 0 B 0 1
1 1 C 0 2
1 2 A 2 2
1 2 D 0 0
Как видите, когда происходит событие A, я хочу увеличить счетчик A на единицу.Когда происходит событие B или C, я хочу увеличить счетчик BC на единицу.
Я использовал фразу «связанный», потому что в Excel я просто создал бы логику для увеличения post_counters для A и BCиспользуя формулу if, просто отстаем от pre_counters, чтобы они были равны соответствующему post_counter в предыдущей строке.
Я пытался использовать оператор ifelse в R, но не был уверен, как увеличить как pre_counter, так и post_countersодновременно.
df$post_counter_A <- with(df, ifelse(event == A, pre_counter_A + 1,
lag(pre_counter_A))
df$post_counter_BC <- with(df, ifelse(event == B, pre_counter_BC + 1,
ifelse(event == C, pre_counter_BC + 1,
lag(pre_counter_BC)))
Приведенный выше код демонстрирует некоторую логику ifelse, но как мне обновить столбцы pre_counter, чтобы значения корректно обновлялись во всем фрейме данных.
Дополнительным вариантом логики является то, что я хочу установить предел на счетчике, чтобы они сбрасывались после достижения определенного значения, например, 5 или определенного события, например, D, как показано на рисунке.последний ряд таблицы выше.
Спасибо за помощь.