R语言dplyr:如何避免接近1的数值被四舍五入为1?
解决方案
可以通过dplyr的case_when结合条件判断实现需求:
library(dplyr) Data <- tibble(Number = c(0.998971282, 0.97871, 0.98121752874, 0.98921752874, 0.91571358, 1)) Data %>% mutate(Desired = case_when( Number == 1 ~ 1.00, round(Number, 2) == 1 ~ 0.99, TRUE ~ round(Number, 2) ))
逻辑说明
- 精确等于1的数值直接返回
1.00 - 非1数值先尝试四舍五入到两位小数:若结果为1(比如原数值
0.998971282),则替换为0.99 - 其余情况直接保留四舍五入到两位小数的结果
执行代码后输出结果如下,完全匹配期望:
# A tibble: 6 × 2 Number Desired <dbl> <dbl> 1 0.999 0.99 2 0.979 0.98 3 0.981 0.98 4 0.989 0.99 5 0.916 0.92 6 1 1.00
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

