如何在R语言中移除数据框(df)所有单元格中的非数字字符?
R语言移除数据框所有单元格的非数字字符
基础Base R解决方案
先构造和你场景一致的示例数据框:
df <- data.frame( "Column A" = "dfd:13", "Column B" = "hhh:34", "Column C" = "dsd:15", "Column D" = "ffd:67", "Column E" = "hdf:89", "Column F" = "hhj:43", stringsAsFactors = FALSE )
用lapply结合正则表达式批量处理所有列:
# 移除所有非数字字符并转为数值型 df_clean <- lapply(df, function(col) as.numeric(gsub("[^0-9]", "", col))) # 转回数据框格式 df_clean <- as.data.frame(df_clean)
Tidyverse(dplyr)解决方案
如果习惯用tidyverse工具链,可用dplyr::across实现更简洁的批量处理:
library(dplyr) df_clean <- df %>% mutate(across(everything(), ~ as.numeric(gsub("[^0-9]", "", .x))))
关键说明
- 正则表达式
[^0-9]会匹配所有非0-9的字符(包括字母、冒号等特殊符号),用空字符串替换后即可提取纯数字部分,无需指定具体要移除的前缀内容。 - 加上
as.numeric是为了把处理后的字符型数字转为数值类型,避免后续分析出现类型问题。
处理后的结果:
| Column A | Column B | Column C | Column D | Column E | Column F |
|---|---|---|---|---|---|
| 13 | 34 | 15 | 67 | 89 | 43 |
内容的提问来源于stack exchange,提问作者grace.cutler
相关产品推荐
相关产品推荐

