Я часто сталкиваюсь с случаями, когда я хочу написать оператор ifelse, содержащий несколько комбинаций условий, и в итоге я просто выписываю каждую возможную комбинацию, которая соответствует моим критериям. Я уверен, что должен быть более эффективный способ сделать это.
observation <- c(1:3, 1:3, 1:3, 1:3)
var1 <- c(0, 0.3, 0.3, 5, -0.3, -0.6, -4, 6,-0.75, 0.75, 3, 0.75)
dat <- as.data.frame(cbind(observation, var1))
В этом примере меня интересует создание флага для экстремальных значений (то есть значений, которые больше 1 или меньше -1), которые появляются во время второго наблюдения.
Я надеюсь, что есть какой-то способ попросить R сделать что-то вроде создания флага , если наблюдение == 2 и EITHER var1> 1 ИЛИ var1 <-1, сделайте его 1, в противном случае сделайте это 0 </em>
Но лучшее, что я знаю, это написать отдельные вложенные операторы ifelse, например
dat$flag <- with(dat, ifelse(observation == 2 & var1 > 1, 1,
ifelse(observation == 2 & var1 < -1, 1, 0)))
Очевидно, что в данном примере это не так уж и плохо, но у меня часто бывает много условий для комбинации - например, я хочу пометить все записи для учеников, которые учились в 9-12 классах в течение 2014-2018 годов, что означает также пометку записи для учеников, которые учились в 9-11 классах в 2013 году, и которые были в 9-10 классах в 2012 году и которые были в 9 классе в 2011 году. Но, надеюсь, этот пример поможет понять :)
Спасибо за вашу помощь!