R语言中如何将价格字符向量转换为可统计计算的numeric向量
核心原因
你使用的价格为欧洲格式数字:.是千位分隔符,,是小数分隔符,直接替换逗号会残留千分位点,导致转换失败。
解决方法
方法1:基础R实现(无需额外安装包)
通过两次正则替换处理格式后转数值:
# 第一步:删除所有作为千分位的点,第二步:将作为小数点的逗号替换为点,最后转为数值型 price$Price_num <- as.numeric(sub(",", ".", gsub("\\.", "", price$Price)))
方法2:tidyverse 实现(更稳妥,无需手动写正则)
使用readr包的parse_number函数直接指定分隔符规则:
library(readr) # 明确指定小数分隔符为逗号,千位分隔符为点 price$Price_num <- parse_number(price$Price, locale = locale(decimal_mark = ",", grouping_mark = "."))
后续统计量计算
转换完成后统一用数值列计算所有统计量即可,不要直接用原始字符向量计算min/max,避免字典序和数值排序逻辑不一致出现错误:
# 最小值 min(price$Price_num) # 最大值 max(price$Price_num) # 平均值 mean(price$Price_num) # 中位数 median(price$Price_num)
用你提供的示例数据转换后,计算得到的结果为:最小值1651,最大值2229,平均值约1843.14。
内容的提问来源于stack exchange,提问作者Stefano Maria De Francesco
相关产品推荐
相关产品推荐

