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

R如何将Data Frame中父商品指定列的值覆盖到关联子商品对应列

解决思路

  • 首先提取每个sku对应的父sku标识:去掉sku末尾-\d{3}格式的后缀即可
  • 提取所有父商品的power、width属性,生成映射表
  • 用映射表匹配所有商品,将子商品的对应属性替换为父商品的属性值

代码实现(基于tidyverse)

首先加载依赖包:

library(tidyverse)

构造示例数据:

df <- data.frame(sku = c("V1000837", "V1000837-001", "V1000837-002", "01549831"),
           height = c(10, 12, NA, 50),
           width = c(15, NA, 15, 150),
           color = c("red", "blue", "green", "black"),
           power = c("12W", NA, NA, "130W"))

处理逻辑:

# 生成父sku辅助列
df_process <- df %>%
  mutate(parent_sku = str_remove(sku, "-\\d{3}$")) 

# 构建父商品属性映射表,存在重复父sku时可加distinct()去重
parent_map <- df_process %>%
  filter(str_starts(sku, "V") & !str_detect(sku, "-\\d{3}$")) %>%
  select(parent_sku = sku, parent_width = width, parent_power = power)

# 匹配替换子商品属性
result <- df_process %>%
  left_join(parent_map, by = "parent_sku") %>%
  mutate(
    # 仅符合规则的子商品替换对应属性
    width = ifelse(str_starts(sku, "V") & str_detect(sku, "-\\d{3}$"), parent_width, width),
    power = ifelse(str_starts(sku, "V") & str_detect(sku, "-\\d{3}$"), parent_power, power)
  ) %>%
  # 清理辅助列
  select(-parent_sku, -parent_width, -parent_power)

输出result即可得到你需要的预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:39:03