Вложенное выражение if-else, тестируется только первый критерий - PullRequest
0 голосов
/ 28 января 2020

У меня есть набор данных "cipe", и я пытаюсь создать новую переменную "case", если какой-либо из следующих критериев "htn, sle", "apls", "diabetes", "ckd" met

Код, который я использую:

cipe <- mutate(cipe, case == ifelse(htn == 1, "1",
                                ifelse(sle == 1, "1",
                                       ifelse(apls == 1, "1",
                                              ifelse(diabetes == 1, "1",
                                                     ifelse(ckd == 1, "1", "0"))))))

В моем наборе данных ~ 840 тыс. наблюдений, поэтому публиковать его невозможно, но когда я запускаю этот код, число «1» в новой переменной "case" в точности равно числу "1" в "htn", (должно быть намного выше), поэтому другие тесты не оцениваются. Любая помощь будет отличной. Спасибо

1 Ответ

0 голосов
/ 28 января 2020

Мы можем подставить столбцы набора данных 'cipe', создать логическую матрицу, сравнивая с 1, использовать rowSums, проверить, если она больше 0, преобразовать логический в двоичный файл с помощью + или as.integer

+(rowSums(cipe[c('sle', 'apls', 'diabetes', 'ckd')] == 1) > 0)

Или другой вариант Reduce с |

+(Reduce(`|`, lapply(cipe[c('sle', 'apls', 'diabetes', 'ckd')], `==`, 1)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...