данные
data=data.frame("person"=c(1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2),
"score"=c(1,2,1,2,3,1,3,NA,4,2,1,NA,2,NA,3,1,2,4),
"want"=c(1,2,1,2,3,3,3,3,4,2,1,1,2,2,3,3,3,4))
попытка
library(dplyr)
data = data %>%
group_by(person) %>%
mutate(wantTEST = ifelse(score >= 3 | (row_number() >= which.max(score == 3)),
cummax(score), score),
wantTEST = replace(wantTEST, duplicated(wantTEST == 4) & wantTEST == 4, NA))
Я в основном работаю над использованием функции cummax, но только при определенных обстоятельствах.я хочу сохранить любые значения (1-2-1-1) за исключением случаев, когда есть 3 или 4 (1-2-1-3-2-1-4) должно быть (1-2-1-3-3)-4).если есть значение NA, я хочу перенести предыдущее значение.спасибо.