Используя ввод, показанный воспроизводимо в конце заметки, попробуйте это:
addGo <- function(x) replace(x, cumsum(x == "Green") > 2 & x == "Green", "Go")
replace(DF, -1, replace(DF[-1], TRUE, t(apply(DF[-1], 1, addGo))))
, что дает:
VarID x1 x2 x3 x4 x5
1 1 Red Yellow Green Green Go
2 2 Yellow Green Green Go Go
3 3 Red Red Red Yellow Green
или напишите его так:
isGreen <- DF[-1] == "Green"
replace(DF, -1, replace(DF[-1], t(apply(isGreen, 1, cumsum)) > 2 & isGreen, "Go"))
Примечание
Предполагается, что ввод:
Lines <- "
VarID x1 x2 x3 x4 x5
1 Red Yellow Green Green Green
2 Yellow Green Green Green Green
3 Red Red Red Yellow Green"
DF <- read.table(text = Lines, header = TRUE, as.is = TRUE)