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

如何将带K/M后缀的字符型数值转换为数值数据类型

带K/M后缀的字符数值转数值类型的解决方案

只用gsub只能去掉后缀,但没法处理单位对应的量级,得结合数字提取和倍数换算来做,下面给两种实用方法:

方法一:用dplyr的case_when(适合批量处理)

先写一个转换函数,能自动识别后缀并完成换算:

library(dplyr)

convert_suffix_num <- function(x) {
  # 提取纯数字部分并转为数值类型
  num <- as.numeric(gsub("[K|M]", "", x))
  # 提取后缀字符
  suffix <- gsub("[0-9.]", "", x)
  
  # 根据后缀匹配对应的倍数
  case_when(
    suffix == "K" ~ num * 1000,
    suffix == "M" ~ num * 1000000,
    TRUE ~ num # 无后缀的数值直接返回原数
  )
}

测试示例:

convert_suffix_num("80.53K") # 输出 80530
convert_suffix_num("5.79M")  # 输出 5790000
convert_suffix_num("123")    # 输出 123

方法二:纯base R实现(无需额外加载包)

如果不想依赖dplyr,用嵌套ifelse也能实现:

convert_suffix_num_base <- function(x) {
  num <- as.numeric(gsub("[K|M]", "", x))
  # 提取字符串最后一位作为后缀判断依据
  suffix <- substr(x, nchar(x), nchar(x))
  
  ifelse(suffix == "K", num * 1000, 
         ifelse(suffix == "M", num * 1000000, num))
}

核心逻辑就是:先剥离字符中的K/M符号转成基础数值,再根据后缀判断需要乘以的量级(K对应103,M对应106),小数点后的数字会被自动保留并参与换算。

内容的提问来源于stack exchange,提问作者beginner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:03:36