Это вопрос эффективного написания логических условий.
Допустим, я хочу перекодировать переменную, если какой-либо столбец в наборе равен определенному значению.
test <- tibble(
CompanyA = rep(c(0:1),5),
CompanyB = rep(c(0),10),
CompanyC = c(1,1,1,1,0,0,1,1,1,1)
)
test
Базовый способбудет:
test$newvar <- ifelse(test$CompanyA==1 | test$CompanyB == 1 | test$CompanyC == 1,-99,0)
table(test$newvar)
Но что, если у меня несколько десятков столбцов?Я не хочу выписывать CompanyA
, CompanyB
и т. Д. Есть ли способ по существу использовать оператор типа %in
?Вот явно неправильный метод:
condition <- columns %in% c("CompanyA", "CompanyB", "CompanyC") . # obviously doesn't work
test$newvar[condition] <- 1
Или это еще более простой способ сделать это - например, if CompanyA:CompanyC == 1, then do...
?