Я хочу найти способ заменить последовательные одинаковые значения на 0 в начале каждого испытания, но после изменения значения оно должно прекратить замену и сохранить значение. Это должно происходить при каждом испытании по каждому субъекту.
Например, у первого субъекта есть несколько испытаний (1, 2, и т. Д. c). В начале каждого испытания может быть несколько последовательных строк с одинаковым значением (например, 1, 1, 1). Для этих значений я хотел бы заменить их на 0. Однако, как только значение изменилось с 1 на 0, я хочу сохранить значения в остальной части испытания (например, 0, 0, 1).
subject <- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
trial <- c(1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2)
value <- c(1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1)
df <- data.frame(subject, trial, value)
Таким образом, из исходного фрейма данных я хотел бы иметь новую переменную (value_new), как показано ниже.
subject trial value value_new
1 1 1 1 0
2 1 1 1 0
3 1 1 1 0
4 1 1 0 0
5 1 1 0 0
6 1 1 1 1
7 1 2 1 0
8 1 2 1 0
9 1 2 0 0
10 1 2 1 1
11 1 2 1 1
12 1 2 1 1
Я думал использовать tidyr и group_by (subject, trial) и изменить новую переменную с помощью условного оператора, но не знаю, как это сделать. Думаю, мне нужно использовать rle (), но, опять же, я понятия не имею, как заменить последовательные значения на 0 и прекратить замену после изменения значения и сохранить остальные значения.
Любые предложения или совет будет очень признателен!