代码之家  ›  专栏  ›  技术社区  ›  sbac

如何在函数中使用mutate\ if

  •  1
  • sbac  · 技术社区  · 7 年前

    d result )使用函数 replace_by_sym

    library(tidyverse)
    
    d <- data.frame(dir = c(-1,1,-1,1,1), a = rep(100,5), b = 105:109, c = 108:112)
    
    replace_by_sym <- function(x){
      x <- x * (-1) + 200
    }
    
    d %>%
      mutate_if(dir=-1, vars(a:c),
                funs(replace_by_sym(.))) -> result
    

    获得

       dir   a   b   c
    1  -1   100  95  92
    2   1   100 106 109
    3  -1   100  93  90
    4   1   100 108 111
    5   1   100 109 112
    
    1 回复  |  直到 7 年前
        1
  •  6
  •   akrun    7 年前

    这可以通过 ifelse

    d %>% 
      mutate_at(vars(a:c), funs( ifelse (dir == -1, (dir * .)  + 200, .)))
    #   dir   a   b   c
    #1  -1 100  95  92
    #2   1 100 106 109
    #3  -1 100  93  90
    #4   1 100 108 111
    #5   1 100 109 112
    

    或与 case_when

    d %>% 
       mutate_at(vars(a:c), funs(case_when(dir == -1 ~ (dir * .) + 200, 
                                           TRUE ~ as.numeric(.))))
    
    推荐文章