Как добавить категориальную переменную, колледж, для тех, у кого есть степень бакалавра, магистра, доктора философии, уже закодированная в R

#r

#r

Вопрос:

У меня есть фрейм данных, который уже содержит фиктивные переменные для «бакалавра», «магистра» и «доктора философии», где 1 = человек имеет степень, а 0 = человек не имеет степени.

Как мне добавить новую фиктивную переменную в мой фрейм данных для получения степени бакалавра или выше?

Имя моего фрейма данных — колледж, и до сих пор я пробовал разные варианты

 college$baplus <- if else(college["BA"],["MA"],["PHD] ==1, 0)
 

Степень бакалавра, магистра и доктора философии являются атомарными.

Ответ №1:

Мы можем использовать векторизованный подход rowSums , т.е. подмножество столбцов ‘BA’, ‘MA’, ‘PHD’, получаем rowSums . Выполните сравнение, чтобы проверить, больше ли сумма 0, затем преобразуйте логическое значение в целое число с помощью ( TRUE -> 1 и FALSE -> 0)

 college$baplus <-   (rowSums(college[c("BA", "MA", "PHD")]) >0)
 

Было ifelse бы без пробела, и это на самом деле не нужно, но если мы хотим синтаксис

 college$baplus <- ifelse(rowSums(college[c("BA", "MA", "PHD")]) > 0, 1, 0)
 

Или другой вариант apply с MARGIN = 1 (для последовательного применения функции)

 college$baplus <- as.integer(apply(college[c("BA", "MA", "PHD")], 1, any))
 

Также разумно предположить, что нам нужно сравнивать только столбец «BA», потому что те, у кого более высокие степени, должны иметь «BA», поэтому, если цель состоит в том, чтобы проверить, есть ли у кого-то более высокие степени, rowSums сравнение будет > 1

 college$baplus <-  (rowSums(college[c("BA", "MA", "PHD")]) > 1)