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

如何使用R将数据框中带单位的变量转换为数值?

解决方法

下面提供两种简便的实现方式,用于在R中将带K/M/B后缀的字符串转换为对应数值:

方法一:基础R原生实现

无需额外安装包,通过字符串处理与单位映射完成转换:

# 修正原数据框(原代码中tic长度与value不匹配,此处调整为对应3行)
problem <- data.frame(tic = rep("AAL", 3), value = c("250M", "120K", "10B"))

# 提取数字部分与后缀部分
nums <- as.numeric(sub("[A-Z]", "", problem$value))
suffixes <- sub("[0-9]", "", problem$value)

# 定义单位对应的乘数
multipliers <- c(K = 1000, M = 1e6, B = 1e9)

# 计算转换后的值并替换原列
problem$value <- nums * multipliers[suffixes]

# 得到目标结果
result <- problem
print(result)

方法二:tidyverse工具链实现

使用dplyr和stringr简化代码,更适配常规数据处理流程:
先确保安装并加载依赖包:

install.packages(c("dplyr", "stringr"))
library(dplyr)
library(stringr)

再执行转换操作:

problem <- data.frame(tic = rep("AAL", 3), value = c("250M", "120K", "10B"))

result <- problem %>%
  mutate(
    num = as.numeric(str_extract(value, "\\d+")),
    multiplier = case_when(
      str_detect(value, "K") ~ 1000,
      str_detect(value, "M") ~ 1e6,
      str_detect(value, "B") ~ 1e9
    ),
    value = num * multiplier
  ) %>%
  select(-num, -multiplier) # 移除中间辅助变量

print(result)

两种方法均可生成符合需求的result数据框,第二种写法更直观,便于后续扩展复杂的数据处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 20:20:18