【发布时间】:2019-06-01 04:03:52
【问题描述】:
data=data.frame("person"=c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4),
"score"=c(1,2,3,2,2,1,2,3,2,3,1,4,1,4,3),
"WANT"=c(1,2,3,3,2,1,2,3,2,3,3,4,1,4,NA))
我们会跟踪每个人的分数,直到他们达到“精通” (3) 或卓越 (4)。如果一个人得分优秀 (4),则保留该值并删除该人的下一个分数(请参阅第 4 个人;而不是 NA 只想删除该行)。如果一个人得分为精通 (3),则该值将被结转,除非他们得分为 4,这将取代 3 的得分。否则,这些值将保持原样。我试过 cummax func 但不知道如何应用这样的规则。
下面是我的尝试
data$want = ave(data$score, data$person, FUN = function(x) cummax(replace(x, is.na(x), -1)))
【问题讨论】: