🔢parse_number():提取字符串中的数字

type
status
date
slug
summary
tags
category
icon
password
comment
parse_number()readr 包中用于从混合文本中解析数值的便捷函数。它会忽略非数字字符(如单位、货币符号、百分号等),并将提取出的数字转换为双精度数值(double)。

1. 函数原型

参数
说明
x
要解析的字符向量(character
locale
本地化设置,可控制小数点符号、千分位分隔符、货币符号等(readr::default_locale()
...
其他传递给底层解析器的参数

2. 基本示例


3. 场景演示

3.1 带单位的数据

3.2 清洗价格或金额

3.3 处理百分比


4. 批量清洗示例

配合 dplyr::mutate()across(),一次处理多列:

5. 小贴士

  • 自动忽略所有前后非数字字符,保留纯数字及小数点。
  • 字符串中无数字时返回 NA
  • 若要处理带分组千分位(如 1,234)或欧式小数格式(1.234,56),需调整 locale
    • 对百分比除以 100,可写作 parse_number(x) / 100
    • 对于复杂的格式(如负号、括号表示负值),可结合正则预处理或后续 sign() 调整。

    总结
    parse_number() 在清洗带有单位、符号或千分位分隔符的字符数据时极其高效,配合 dplyr 管道可快速完成批量数值提取,是日常数据预处理的必备武器。
    Prev
    pivot_wider():长表 → 宽表(long → wide)
    Next
    pivot_longer():宽转长(wide → long)
    Loading...
    Article List
    Evan の Logbook
    ✨ Updates
    🎨 Style Guide
    🧠 Creative Resources
    🗒️ Mind Notes
    🧭 Knowbase
    📘 SOPs
    🩺 Medical Research
    🛠️ Tech Chronicles
    💰 Fortune Blueprint
    📈 R Visionary
    📊 Statistics
    🖼️ BioVis