如何四舍五入到R

0 r rounding dataframe dplyr

我想在df中将数字四舍五入,但25、50或75应该是100,125应该是100,150或175应该是200。220应该是200,依此类推。

换句话说,如果数字小于100,则应四舍五入为100,大于100的数字应四舍五入,如果小于50,则取整为最接近的整数。

可以说我的数据框是

    df <- data.frame(replicate(1,sample(0:999,100,rep=TRUE)))
colnames(df) <- c("data")
Run Code Online (Sandbox Code Playgroud)

我尝试了这个:

result <- df %>% 
  mutate(
    data = round(if_else(data <= 100, 100, as.numeric(data)), 100)
  )
Run Code Online (Sandbox Code Playgroud)

但是只有第一部分有效,如果数量小于100,则将其设为100。我在做什么错?

G. *_*eck 5

检查它是否小于100,然后使用100或四舍五入:

x <- c(25, 50, 75, 125, 150, 175, 220)
ifelse(x < 100, 100, 100 * round(x / 100))
## [1] 100 100 100 100 200 200 200
Run Code Online (Sandbox Code Playgroud)

此变体也适用:

pmax(100, 100 * round(x / 100))
## [1] 100 100 100 100 200 200 200
Run Code Online (Sandbox Code Playgroud)