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

求小数部分首个小于5的数字位置,无则返回小数位数(R语言dplyr实现)

问题解决:定位小数部分首个小于5的数字位置

需求说明

  • 目标:获取数值小数部分中第一个小于5的数字的位置;若所有小数位数字均≥5,则返回该数值的小数位数。

示例数据

先创建示例数据集:

library(dplyr)
Data <- tibble(Number = c(0.998971282, 0.97871, 0.98121752874, 0.98921752874, 0.95171358, 0.99999999))

实现方案

手动硬编码结果只能处理固定数据,这里提供通用函数自动计算目标位置:

# 自定义计算函数
find_first_less_5 <- function(num) {
  num_str <- as.character(num)
  # 处理无小数部分的情况
  if (!grepl("\\.", num_str)) {
    return(0)
  }
  # 提取小数部分
  decimal_part <- strsplit(num_str, "\\.")[[1]][2]
  digits <- strsplit(decimal_part, "")[[1]]
  # 遍历查找首个小于5的数字位置
  for (i in seq_along(digits)) {
    if (as.integer(digits[i]) < 5) {
      return(i)
    }
  }
  # 所有小数位都≥5时,返回小数位数
  return(length(digits))
}

# 计算并添加Position列
Data <- Data %>% mutate(Position = sapply(Number, find_first_less_5))

运行结果

执行后Data的Position列结果为c(6, 5, 3, 4, 3, 8),与预期完全一致。

内容的提问来源于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 21:50:28