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

找到R值上下最接近的倍数

r
  •  0
  • TTS  · 技术社区  · 3 年前

    我试图确定落在倍数上的变量的上下值,最好是 dplyr::mutate .

    在这个简化的例子中。我想确定50的倍数,包括高于和低于我的值 x 我有这种印象 cut 这是我应该使用的,但我还没有让它发挥作用。

    df <- data.frame(
      x = c(265, 617, 88, 99, 143, 378)
    )
    
        x
    1 265
    2 617
    3  88
    4  99
    5 143
    6 378
    
    desired_result <- data.frame(
      x = c(265, 617, 88, 99, 143, 378),
      above = c(300, 650, 100, 100, 150, 400),
      below = c(250, 600, 50, 50, 100, 350)
    ) 
    
        x above below
    1 265   300   250
    2 617   650   600
    3  88   100    50
    4  99   100    50
    5 143   150   100
    6 378   400   350
    
    1 回复  |  直到 3 年前
        1
  •  2
  •   Jon Spring    3 年前
    df$above = ceiling(df$x/50)*50
    df$below = floor(df$x/50)*50
    
    
        x above below
    1 265   300   250
    2 617   650   600
    3  88   100    50
    4  99   100    50
    5 143   150   100
    6 378   400   350
    
        2
  •  1
  •   Timon    3 年前

    你可以使用模运算符 %% :

    df %>% 
     mutate(above = x - (x %% 50) + 50, 
            below = x - (x %% 50))
    

    输出:

        x above below
    1 265   300   250
    2 617   650   600
    3  88   100    50
    4  99   100    50
    5 143   150   100
    6 378   400   350