R ROWMAX на основе критериев - PullRequest
       14

R ROWMAX на основе критериев

1 голос
/ 18 апреля 2019
data=data.frame("id"=c(1,2,3,4),
"score1"=c(1,1,2,1),
"score2"=c(1,2,3,3),
"score3"=c(2,3,1,1),
"score4"=c(3,4,4,2),
"score1WANT"=c(1,1,2,1),
"score2WANT"=c(1,2,3,3),
"score3WANT"=c(2,3,3,3),
"score4WANT"=c(3,4,4,3))

Здесь есть четыре возможных варианта оценки: 1,2,3,4.

Если какой-либо «балл» равен 3, то все последующие баллы равны 3, ЕСЛИ БЕЗ 4. Это так: например, 1 3 2 2 следует изменить на 1 3 3 3. 3 2 3 4 следует изменить на 3 3 3 4.

Я пытаюсь сделать это с ROWMAX, но проблема в том, что есть 4, и поэтому он устанавливает значения в 4, если есть 4.

1 Ответ

1 голос
/ 18 апреля 2019

Нам нужно cummax и при условии, что это должно быть общим

data[2:5] <- t(apply(data[2:5], 1, cummax))

Если условие только для значения 3

data[2:5] <- t(apply(data[2:5], 1, function(x) {
      i1 <- which(x == 3)
      i2 <- which(x == 4)
     if(length(i2) > 0) replace(x, i1:(i2-1), 3) else replace(x, i1:length(x), 3)}))
...