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

如何移除数据框字符型列中的科学计数法格式?

处理字符列中科学计数法转普通数字字符串的问题

示例数据

vector <- c("HMM","5.8779396207367296E+17","GOLF","3191963","355534317","8.837971002284400E+16")
exampledf <- as.data.frame(vector)

解决方案

通过正则表达式识别科学计数法格式的元素,针对性转换,保留原有文本:

# 定义转换函数
convert_sci_to_plain <- function(str_vec) {
  # 匹配科学计数法格式的正则表达式
  sci_regex <- "^[0-9.]+[Ee][+-]?[0-9]+$"
  # 批量转换:仅处理符合科学计数法的元素
  str_vec[grepl(sci_regex, str_vec)] <- as.character(as.numeric(str_vec[grepl(sci_regex, str_vec)]))
  return(str_vec)
}

# 应用到数据框的目标列
exampledf$vector <- convert_sci_to_plain(exampledf$vector)

# 查看转换结果
print(exampledf$vector)

输出结果

[1] "HMM"                "587793962073672960" "GOLF"               "3191963"           
[5] "355534317"          "88379710022844000" 

注:你提供的期望结果中最后一个值存在笔误,正确转换后应为88379710022844000,与原科学计数法8.837971002284400E+16对应

逻辑说明

  • grepl(sci_regex, str_vec):筛选出所有符合科学计数法格式的字符串
  • as.numeric():将科学计数法字符串转为数值类型,自动解析为普通数字
  • as.character():把数值转回字符串格式,避免科学计数法显示
  • 直接通过索引赋值,仅修改需要转换的元素,原文本内容完全保留

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:07:28