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

在R中基于数据框匹配值创建零件号与名称合并列(tidyverse实现)

解决方案:用tidyverse合并零件号与名称并生成新字段

步骤1:加载tidyverse包并构造示例数据

首先加载tidyverse工具包,同时构造你提供的两个数据框:

library(tidyverse)

# 维修成本数据df1
df1 <- tibble(
  Part_Number = c("A123", "A321", "A231", "A231", "A123", "A321"),
  Repair_Cost = c(150, 230, 100, 120, 180, 120)
)

# 零件号-名称对应表df2
df2 <- tibble(
  Part_Number = c("A321", "A231", "A123"),
  Part_Name = c("Wheel", "Strut", "Mount")
)

步骤2:合并数据并生成目标字段

使用left_join匹配两个数据框的零件号,再用str_c拼接字段:

df1_combined <- df1 %>%
  # 按Part_Number合并df2的名称信息
  left_join(df2, by = "Part_Number") %>%
  # 拼接零件号与名称
  mutate(Part_Num_Name = str_c(Part_Number, " : ", Part_Name))

查看结果

运行后df1_combined会包含新增的Part_Num_Name字段,示例输出:

# A tibble: 6 × 4
  Part_Number Repair_Cost Part_Name Part_Num_Name
  <chr>             <dbl> <chr>     <chr>        
1 A123                150 Mount     A123 : Mount 
2 A321                230 Wheel     A321 : Wheel 
3 A231                100 Strut     A231 : Strut 
4 A231                120 Strut     A231 : Strut 
5 A123                180 Mount     A123 : Mount 
6 A321                120 Wheel     A321 : Wheel 

原代码问题说明

你之前的代码无法运行的原因:

  • 列名不匹配:你使用的Part_Num、PartNumber、part_name与实际数据框的字段名Part_Number、Part_Name不一致
  • ifelse用法错误:ifelse需要三个参数(条件、满足时的值、不满足时的值),你只写了两个;且直接引用df2$part_name会因为长度不匹配,无法对应到df1的每一行
  • tidyverse规范:tidyverse推荐使用管道(%>%)和join操作处理数据关联,比ifelse更可靠易读

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:40:35