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

如何在R中对含可变长度字符串及数字序列的列进行分类?

解决方案

我们可以利用字符串的固定前缀模式,通过正则匹配快速完成分类,以下是具体的R代码实现:

1. 构造示例数据

library(dplyr)
library(stringr)

# 构造标签数据
tags <- c(
  "#Name-account-dynamic-table-301889874517022",
  "#Name-account-dynamic-table-301892680435489",
  "#Name-account-dynamic-table-301898303041520",
  "#Name-account-dynamic-table-301899707194367",
  "#PartyName-_oj131-300010926780895",
  "#PartyName-_oj145-100049488429695",
  "#PartyName-_oj148-100046909736911",
  "#PartyName-_oj156-100039245551420",
  "#SalesCreditImage_100005748173584",
  "#SalesCreditImage_1676885837179",
  "#SalesCreditImage_1676894490983",
  "#SalesCreditImage_1677180209183",
  "#SalesCreditImage_1677221857743",
  "#SalesCreditImage_300007572814764",
  "#SalesCreditImage_300010430355109",
  "#_oj1046_headerContainer",
  "#_oj1053_headerContainer",
  "#_oj110_h"
)

df <- tibble(序号 = 1:18, 标签 = tags)

2. 添加分类列

用case_when结合str_detect匹配前缀模式,给每行分配对应类别:

df <- df %>%
  mutate(类别 = case_when(
    str_detect(标签, "^#Name-account-dynamic-table-") ~ "第一类",
    str_detect(标签, "^#PartyName-_oj") ~ "第二类",
    str_detect(标签, "^#SalesCreditImage_") ~ "第三类",
    str_detect(标签, "^#_oj\\d+_headerContainer") ~ "第四类",
    str_detect(标签, "^#_oj110_h") ~ "第五类",
    TRUE ~ "未分类" # 兜底处理,避免遗漏特殊情况
  ))

3. 验证结果

运行代码后,df会新增类别列,对应你需要的分类规则。打印完整数据框查看结果:

print(df, n = 18)

代码说明

  • str_detect(标签, "^xxx"):^表示匹配字符串开头,确保只匹配以指定前缀开头的标签,避免误匹配。
  • 正则表达式^#_oj\\d+_headerContainer中,\\d+匹配一个或多个数字,能覆盖所有#_ojxxx_headerContainer格式的标签。
  • 单独匹配#_oj110_h是因为它的模式与第四类不同,直接指定即可。

内容的提问来源于stack exchange,提问作者user2845095

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:32:44