有条件地创建多个变量

时间:2018-01-04 23:29:24

标签: r dplyr tidyverse

我正在尝试使用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}

1 个答案:

答案 0 :(得分:3)

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

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))