【发布时间】:2019-10-28 15:26:57
【问题描述】:
数据
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 值,我想结转以前的值。谢谢。
【问题讨论】: