有条件地创建多个变量

Conditionally creating multiple variables

我正在尝试使用 R dplyr 根据条件创建多个变量。我必须将相同的条件写三次才能完成这项工作,但我猜测有一种有效的方法可以通过一次编写条件并使用该条件创建多个变量来完成此任务。我尝试这样做的原因是,如果条件发生变化,在一个位置更新条件会比更新三次更容易。请帮忙

示例:

当前解决方案:

library(dplyr)

x = c(12,8,3)

df<-data.frame(x)

y<- df %>% mutate( a = ifelse(x>10 ,1,
                       ifelse(x>5  ,11,0)),

                   b = ifelse(x>10 ,2,
                       ifelse(x>5  ,12,0)),

                   c = ifelse(x>10 ,3,
                       ifelse(x>5  ,13,0))            
           )

正在寻找这样的东西:

if      x>10 then
    {a=1 b=2 c=3}
else if x>5 then
    {a=11 b=12 c=13} 
else
    {a=0 b=0 c=0}

定义一个函数并使用它三次:

cond <- function(x, x1, x2) 
  case_when(
     x > 10 ~ x1,
     x >  5 ~ x2,
     TRUE ~ 0)

df %>% mutate(a = cond(x, 1, 11), b = cond(x, 2, 12), c = cond(x, 3, 13))