Используйте оператор if else для фиктивного кодирования в R - PullRequest
1 голос
/ 19 июня 2020

Я попытался создать оператор If Else, чтобы перекодировать мою переменную в фиктивную переменную.

Я знаю, что есть функция ifelse () и fastDummy-Package, но я безуспешно пробовал этот способ.

Почему это не работает? Я хочу лучше изучить и понять R.

if(df$iscd115==1){
  df$iscd1151 <- 1
} else {
  df$iscd1151 <- 0
}

1 Ответ

0 голосов
/ 19 июня 2020

Это должно быть разумным решением.

Сначала мы выясним, каковы позиции ваших важных столбцов, а затем мы 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))
...