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

如何用R语言starts_with函数按前缀创建分组新列

基于codi列前缀创建分组列的R实现方法

首先明确:starts_with()是dplyr中用于选择列的工具,无法直接判断行的字符串前缀,我们可以通过字符串提取+条件映射的方式实现需求。

原始数据

df <- structure(list(codi=c("01113", "01136", "01163", "01167", "0117A", "01173", "04210","04411", "04421", "04431", "04441", "04511", "04521", "02301", "03113")))

方法一:dplyr + stringr 方案(推荐,可读性强)

通过提取字符串前两位前缀,再用条件语句映射到对应分组:

library(dplyr)
library(stringr)

df <- df %>%
  mutate(
    # 提取codi列的前两位字符作为前缀
    prefix = str_sub(codi, 1, 2),
    # 根据前缀匹配分组
    groups = case_when(
      prefix == "01" ~ "Group A",
      prefix == "02" ~ "Group B",
      prefix == "03" ~ "Group C",
      prefix == "04" ~ "Group D",
      # 可按需添加更多前缀规则
      TRUE ~ "Other Group" # 处理未匹配的前缀
    )
  ) %>%
  select(-prefix) # 可选:删除中间生成的prefix列

方法二:base R 方案(无需加载额外包)

利用原生字符串函数和命名向量实现映射:

# 提取所有codi值的前两位前缀
prefixes <- substr(df$codi, 1, 2)

# 创建前缀与分组的映射关系表
group_map <- c("01" = "Group A", "02" = "Group B", "03" = "Group C", "04" = "Group D")

# 匹配分组并添加到数据框
df$groups <- group_map[prefixes]
# 可选:给未匹配的前缀设置默认分组
df$groups[is.na(df$groups)] <- "Other Group"

验证结果

执行后df$groups的输出与需求一致:

[1] "Group A" "Group A" "Group A" "Group A" "Group A" "Group A" "Group D" "Group D" "Group D" "Group D" "Group D" "Group D" "Group D" "Group B" "Group C"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:54:19