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

在R语言中实现产品编码命名对应及贸易值均分处理

R语言实现产品编码命名对应与贸易值均分

解决方案思路

要完成需求,需先统计每个旧产品编码对应的新产品编码数量,再将原贸易值按该数量均分,最后通过右连接关联所有新产品编码,确保总贸易值不变。以下是具体实现步骤:

代码实现

首先确保安装并加载dplyr包(用于数据处理):

# 若未安装dplyr,先执行安装
# install.packages("dplyr")
library(dplyr)

然后按步骤处理数据:

# 创建原贸易数据集,将tradevalue转为数值型(原数据为字符,无法计算)
products <- c("030799","030789","219090")
tradevalue <- as.numeric(c("150","50","75"))
df <- data.frame(products, tradevalue)

# 创建新旧编码对应表
corr_table <- data.frame(
  products = c("030799","030799","030799","030789","030789","219090"),
  products.new = c("030749","030784","030788","030783","030787","219090")
)

# 统计每个旧编码对应的新编码数量
corr_table <- corr_table %>%
  group_by(products) %>%
  mutate(match_count = n()) %>% # 计算分组内的行数(即匹配数)
  ungroup()

# 右连接并计算均分后的贸易值
final_result <- corr_table %>%
  right_join(df, by = "products") %>%
  mutate(tradevalue.new = tradevalue / match_count) %>% # 按匹配数均分贸易值
  select(products.new, products, tradevalue.new) # 按需保留列

# 查看最终结果
print(final_result)

结果说明

运行代码后会生成6行数据:

  • 旧编码030799的150贸易值均分为3个50,对应3个新产品编码
  • 旧编码030789的50贸易值均分为2个25,对应2个新产品编码
  • 旧编码219090的75贸易值保持不变,对应1个新产品编码

总贸易值与原数据一致(150+50+75=275),符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:06:24