Привет У меня есть вопрос, похожий на [текст] ( Заменить значения во фрейме данных из столбца индексов ) У меня есть фрейм данных, который выглядит следующим образом.
COL1 <- c(1,1,1,NA,1,1)
COL2 <- c(1,NA,NA,1,1,1)
COL3 <- c(1,1,1,1,1,1)
index <- c(2,3,2,3,2,2)
Data <- data.frame (COL1, COL2, COL3, index)
Data
COL1 COL2 COL3 index
1 1 1 2
1 NA 1 3
1 NA 1 2
NA 1 1 3
1 1 1 2
1 1 1 2
Где «индекс» говорит мне определенный порог. Для каждой строки я хотел бы заменить все значения столбца до значения, указанного в «индексе», на уникальное значение, например, 99. Таким образом, я хотел бы получить что-то вроде
COL1 COL2 COL3
99 99 1
99 99 99
99 99 1
99 99 99
99 99 1
99 99 1
Из предыдущего вопроса ответизменить экземпляры после "index" будет
t(apply(Data, 1, function(x) {
i1 <- match( x[4], names(x)[-4])+1
i1[i1>3] <- 0
i1 <- if(i1!=0) i1:3 else i1
c(replace(x[-4], i1, 99), x[4])}))
Однако это приводит меня к ошибкам
"Ошибка в случае (i1! = 0) i1: 3 или i1:пропущенное значение, где требуется ИСТИНА / ЛОЖЬ "