Я хотел бы создать новую переменную так, чтобы она была 1
, если любая из переменных из набора переменных равна 1
или 0
в противном случае, используя функции dplyr::mutate
и base any
.
Набор данных:
df <- structure(list(ID = 1:2, METFORMIN = c(0L, 0L), SULPHONYLUREA = c(0L, 0L), MEGLITINIDE = c(0L, 0L), ACARBOSE = c(0L, 0L),
THIAZOLIDINEDIONE = c(0L, 0L), DPP4_INHIBITOR = c(0L, 0L), SGLT2_INHIBITOR = c(1L, 1L), GLP1_RA = c(0L, 0L)),
.Names = c("ID", "METFORMIN", "SULPHONYLUREA", "MEGLITINIDE", "ACARBOSE", "THIAZOLIDINEDIONE", "DPP4_INHIBITOR",
"SGLT2_INHIBITOR", "GLP1_RA"), class = "data.frame", row.names = c(NA, -2L))
Структура данных:
# ID METFORMIN SULPHONYLUREA MEGLITINIDE ACARBOSE THIAZOLIDINEDIONE DPP4_INHIBITOR SGLT2_INHIBITOR GLP1_RA
# 1 0 0 0 0 0 0 1 0
# 2 0 0 0 0 0 0 1 0
Желаемая структура данных:
# ID METFORMIN SULPHONYLUREA MEGLITINIDE ACARBOSE THIAZOLIDINEDIONE DPP4_INHIBITOR SGLT2_INHIBITOR GLP1_RA ORALDM
# 1 0 0 0 0 0 0 1 0 1
# 2 0 0 0 0 0 0 1 0 1
Код 1:
df %>% mutate(ORALDM = if_else(any(METFORMIN:GLP1_RA) == 1, 1, 0))
Это не дает желаемого выхода и выдает ошибку:
Предупреждениесообщения: 1: в METFORMIN: GLP1_RA: числовое выражение имеет 2 элемента: только первый использованный 2: в METFORMIN: GLP1_RA: числовое выражение имеет 2 элемента: только первый использованный
код 2:
df %>% mutate_if(predicate(any(METFORMIN:GLP1_RA) == 1), 1)
Это также дает ошибку:
Ошибка в предикате (любая (METFORMIN: GLP1_RA) == 1): не удалось найти функцию "предикат""