Определение значений первого столбца для каждого идентификатора и их замена на основе этого значения
У меня есть следующий df со многими столбцами:
input <- data.frame(ID = c(1,1,1,1,1,2,2,3,3,3),
Obs1 = c(1,0,1,1,0,0,1,1,0,1),
Obs2 = c(0,1,1,0,1,1,1,1,1,0),
Control1 = c(1,1,2,2,2,1,2,1,1,2),
Control2 = c(1,2,2,2,3,1,1,1,2,2))
Я хотел бы изменить значения столбцов 'Control'. Если первое значение «Obs» для идентификатора равно 0, тогда я должен вычесть -1 для всей группы идентификаторов:
result <- data.frame(ID = c(1,1,1,1,1,2,2,3,3,3),
Obs1 = c(1,0,1,1,0,0,1,1,0,1),
Obs2 = c(0,1,1,0,1,1,1,1,1,0),
Control1 = c(1,1,2,2,2,0,1,1,1,1),
Control2 = c(0,1,1,1,2,1,1,1,2,2))
Способ получения первых значений obs для идентификатора следующий:
i <- 1
aux <- vector("list", 2)
for (i in 2:3)
aux [[i]] <- input[!duplicated(input$ID), i]
С этим списком, как я могу изменить столбцы 'Control'? (У меня больше 100)