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

如何重复数据框行并为每行分配列表中的唯一零件编号

模型行重复与零件编号分配解决方案

首先加载示例数据和零件编号列表:

# 示例数据集
d <- structure(list(ID = 8735:8743, 
                    Model = c("Model_A", "Model_B", "Model_C", "Model_D", "Model_E", "Model_F", "Model_G", "Model_H", "Model_I"), 
                    Part_Num = rep(NA_character_, 9)), 
               row.names = 8615:8623, class = "data.frame")

# 零件编号(转成向量更方便操作)
parts <- c(1234, 1235, 1236, 1237, 1238, 1239, 1230, 1231, 1232, 1233)

核心思路

  1. 拆分数据:把需要处理的模型(Model_A~D)和其他模型分开
  2. 扩展目标行:将每个目标模型的行重复10次,同时分配对应的零件编号
  3. 解决ID重复:生成唯一标识区分重复行
  4. 合并数据:将处理后的行与原始未处理数据合并

方法一:用tidyverse工具链(推荐)

先加载必要的包:

library(dplyr)
library(tidyr)

执行处理:

# 定义需要处理的模型列表
target_models <- c("Model_A", "Model_B", "Model_C", "Model_D")

# 拆分数据
target_data <- d %>% filter(Model %in% target_models)
other_data <- d %>% filter(!Model %in% target_models)

# 扩展行并分配零件编号,同时生成唯一ID
expanded_target <- target_data %>%
  slice(rep(1:n(), each = length(parts))) %>%  # 每行重复10次
  group_by(ID, Model) %>%
  mutate(Part_Num = parts,
         Unique_ID = paste0(ID, "_", Part_Num)) %>%  # 用原ID+零件号做唯一标识
  ungroup()

# 合并所有数据
final_data <- bind_rows(other_data, expanded_target)

方法二:用base R实现

如果不想加载额外包,可用基础R代码:

# 定义目标模型
target_models <- c("Model_A", "Model_B", "Model_C", "Model_D")

# 拆分数据
target_idx <- d$Model %in% target_models
target_data <- d[target_idx, ]
other_data <- d[!target_idx, ]

# 扩展行并分配零件编号
expanded_target <- target_data[rep(1:nrow(target_data), each = 10), ]
expanded_target$Part_Num <- rep(parts, nrow(target_data))
# 生成唯一ID
expanded_target$Unique_ID <- paste0(expanded_target$ID, "_", expanded_target$Part_Num)

# 合并数据
final_data <- rbind(other_data, expanded_target)

关键说明

  • 重复行操作通过rep()实现,确保每个目标模型的行被复制10次
  • 零件编号按模型分组批量赋值,保证每个模型对应完整的10个零件号
  • Unique_ID列解决原ID重复问题,也可替换为自增序号(如expanded_target$Unique_ID <- 1:nrow(expanded_target)),只要能区分重复行即可
  • 代码可重复执行,若需避免重复处理,可先过滤掉已分配Part_Num的行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 12:27:55