Если у вас есть только 123 или 124 в myid
:
mydf$result <- mydf$multiplyme * ifelse(mydf$myid==123,0.6,0.4)
Если в myid
есть другие переменные, добавьте дополнительные ifelse
и регистр по умолчанию.
РЕДАКТИРОВАТЬ:
Поскольку у вас есть дополнительные переменные в myid
, я констатирую расширение.
mydf$result <- mydf$multiplyme * ifelse(mydf$myid==123,0.6,ifelse(mydf$myid==124,0.4,0))
Вы можете изменить 0 в конце на1, если в случае по умолчанию вы хотите сохранить значение multiplyme
.Это может быть расширено до цепочки операторов ifelse
, если вы хотите использовать разные кратные значения для многих значений.
Однако, как указано ниже в комментариях mbq, вы можете использовать оператор switch
, если он начинает получатьunwieldy:
mydf$result <- mydf$multiplyme * sapply(mydf$myid,function(x) switch(as.character(x),"123"=0.6,"124"=0.4))
Это, вероятно, будет медленнее, поскольку это будет цикл, пока ifelse
векторизовано.