Вопрос о перекодировании категориальных переменных в R - PullRequest
0 голосов
/ 28 мая 2019

Очень зеленый R пользователь здесь.У меня есть категориальные переменные: во-первых, это преступление комитета против ребенка или проблемы с психическим здоровьем (дихотомия, 1 = преступность и 0 = психическое здоровье) и совершение преступления против ребенка или проблемы со злоупотреблением психоактивными веществами (дихотомия, 1 = преступность и 0 = веществозлоупотребление).Я хотел бы объединить эти группы, чтобы у меня была дихотомическая группа по преступлениям против детей и психического здоровья или наркомании.Каков был бы лучший способ сделать это?Я играл с «если» заявления, но безрезультатно.

Я играл с утверждениями "если", но безрезультатно.Я хочу сделать новую переменную в моем наборе данных (com), которая объединяет преступления против ребенка (1) и психическое здоровье / токсикоманию (0)

x$com <- if(x$Group.finalCvsM == 1) {
  x$com("1") }
  if(x$Group.finalCvsS == 1) {
    x$com("1") }
  if(x$Group.finalCvsM == 0) {
    x$com("0") }
    if(x$Group.finalCvsS == 0) {
      x$com("0") }

1 Ответ

1 голос
/ 28 мая 2019

Поскольку ваши данные закодированы как двоичные 0/1, мы можем просто использовать логический оператор ИЛИ, |.

## very nice way to solve this particular problem
x$com = x$Group.finalCvsM | x$Group.finalCvsS
## The result will be TRUE or FALSE. 
## If you want 1/0 instead, then wrap it in as.integer: 
x$com = as.integer(x$Group.finalCvsM | x$Group.finalCvsS)

В общем случае , ifelse() - это векторизованная версия if, которая предназначена для подобных случаев. Смотрите страницу помощи ?ifelse для некоторых деталей. Здесь вы будете использовать его как:

x$com = ifelse(x$Group.finalCvsM == 1 | x$Group.finalCvsS == 1, 1, 0)

( Примечание :: , поскольку ваш вопрос не дает пример ввода и желаемый вывод, я не уверен на 100%, хотите ли вы ИЛИ |. Может быть, вы хотите &? Оба работают нормально , используйте то, что соответствует вашей цели.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...