You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:15:33