如何移除数据框字符型列中的科学计数法格式?
处理字符列中科学计数法转普通数字字符串的问题
示例数据
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
相关产品推荐
相关产品推荐

