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

在R中如何重构数据集,为子分类匹配对应的父分类编码及名称

实现方法

你可以基于R的tidyverse工具链实现需求,考虑到你的数据中存在相同3位编码B00对应两个不同父分类名称的情况,我们可以利用「父分类行在前、对应子分类行紧随其后」的数据集结构来处理,具体代码如下:

library(tidyverse)

df2 <- df %>%
  # 标记当前行是否为父分类行
  mutate(is_parent = nchar(subcateg) == 3) %>%
  # 每遇到一个父分类就生成新的组ID,同组内为同一个父分类和它的子分类
  mutate(group_id = cumsum(is_parent)) %>%
  # 组内填充父分类的编码和名称
  group_by(group_id) %>%
  mutate(
    categ = first(subcateg[is_parent]),
    names2 = first(names[is_parent])
  ) %>%
  # 清理多余列,仅保留子分类行
  ungroup() %>%
  filter(!is_parent) %>%
  select(subcateg, names, categ, names2)

逻辑说明

  • 先通过字符长度区分父分类行和子分类行
  • 用累积和函数cumsum给每组从属的父子分类分配相同组ID,解决同编码对应不同分类名的匹配问题
  • 组内填充父分类的编码和名称后,过滤掉原父分类行即可得到你需要的结果
  • 如果你的数据集后续可能出现顺序打乱的情况,需要额外补充字段标识父子分类的从属关系,再通过关联映射表的方式处理即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:18:02