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

如何将含数字与字母的字符串拆分为数字列和字母列?

拆分含数字和字母的字符串为数字列与字母列

这里提供两种R语言的实现方案,分别适用于偏好基础包和tidyverse工具链的场景:

方案一:使用基础R实现(无需额外安装包)

通过正则表达式匹配提取数字和字母部分,无字母的位置自动填充NA:

x <- c("1", "12", "14A", "12B", "6")

# 提取数字部分并转为数值类型
num_part <- as.numeric(sub("([0-9]+).*", "\\1", x))
# 提取字母部分,无字母时设为NA
char_part <- ifelse(grepl("[A-Za-z]", x), sub("[0-9]+", "", x), NA)

# 组合为数据框
result <- data.frame(数字列 = num_part, 字母列 = char_part)
print(result)

运行后输出:

数字列 字母列
1      1   <NA>
2     12   <NA>
3     14      A
4     12      B
5      6   <NA>

方案二:使用tidyverse工具链(需先安装stringr/tidyverse包)

借助stringr包的str_extract函数可以更简洁地完成提取,无匹配项时自动返回NA:

# 若未安装tidyverse先执行:install.packages("tidyverse")
library(tidyverse)

x <- c("1", "12", "14A", "12B", "6")

result <- tibble(原始字符串 = x) %>%
  mutate(
    数字列 = as.numeric(str_extract(原始字符串, "^\\d+")),
    字母列 = str_extract(原始字符串, "[A-Za-z]+")
  )

print(result)

运行后输出:

# A tibble: 5 × 3
  原始字符串 数字列 字母列
  <chr>       <dbl> <chr> 
1 1               1 NA    
2 12             12 NA    
3 14A            14 A     
4 12B            12 B     
5 6               6 NA    

内容的提问来源于stack exchange,提问作者R-MASHup

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:55:22