如何在R中四舍五入到下一个一百
我想把我df中的数字四舍五入到100,但是25、50或75应该是100,125应该是100,150或175应该是200。220应该是200,以此类推 换句话说,若数字小于100,则应四舍五入到100,若大于100的数字小于50,则应向下四舍五入,否则应向上取整到最近的houndred数字 假设我的数据帧是如何在R中四舍五入到下一个一百,r,dataframe,dplyr,rounding,R,Dataframe,Dplyr,Rounding,我想把我df中的数字四舍五入到100,但是25、50或75应该是100,125应该是100,150或175应该是200。220应该是200,以此类推 换句话说,若数字小于100,则应四舍五入到100,若大于100的数字小于50,则应向下四舍五入,否则应向上取整到最近的houndred数字 假设我的数据帧是 df <- data.frame(replicate(1,sample(0:999,100,rep=TRUE))) colnames(df) <- c("data") 我
df <- data.frame(replicate(1,sample(0:999,100,rep=TRUE)))
colnames(df) <- c("data")
我试过这个:
result <- df %>%
mutate(
data = round(if_else(data <= 100, 100, as.numeric(data)), 100)
)
但只有第一部分有效,若数字小于100,则将其设为100。我做错了什么 这里有一个简单的方法: 先除以100,然后取整,再乘以100:
set.seed(1)
data.frame(data = sample(0:999, 10)) %>%
mutate(rounded_data = round(data /100) * 100)
data rounded_data
1 265 300
2 371 400
3 571 600
4 905 900
5 200 200
6 893 900
7 939 900
8 656 700
9 624 600
10 61 100
如果只想在数字大于100时取整,则可以使用If\u else:
检查是否小于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
round函数具有digits参数,该参数指示要使用的小数位数。为了四舍五入到下一个一百位数,请使用数字=-2L。这将避免被百除,四舍五入,乘以百
低于100的值需要特殊处理。因此,使用pmax方法具有简洁性
x <- seq(25, 225, 25)
x
你提到25和125都变成了100。当一个四舍五入发生时,边界是什么?为什么你的头衔说是50舍五入,而在你的问题中你是100舍五入?
pmax(100, 100 * round(x / 100))
## [1] 100 100 100 100 200 200 200
x <- seq(25, 225, 25)
x
[1] 25 50 75 100 125 150 175 200 225
pmax(100, round(x, -2L))
[1] 100 100 100 100 100 200 200 200 200