Это должно быть разумным решением.
Сначала мы выясним, каковы позиции ваших важных столбцов, а затем мы apply
функцию, которая будет искать строки (margin = 1 ), который проверит, равен ли этот важный столбец 1 или 0, а затем соответствующим образом изменит другой столбец.
col1 <- which(names(df) == "iscd115")
col2 <- which(names(df) == "iscd1151")
mat <- apply(df, margin = 1, function(x) {
if (x[col1] == 1) {x[col2] <- 1
} else {
x[col2] == 0
}
x
})
К сожалению, это преобразует исходный фрейм данных в транспонированную матрицу. Мы можем повторно транспонировать матрицу обратно и превратить ее обратно во фрейм данных со следующим:
new_df <- as.data.frame( t(mat))