R语言计算进出口贸易双方申报商品货量Value Gap差值的方法
贸易申报货量差值(Value Gap)计算优化方案
需求说明
需要计算各类商品贸易双方申报货量的Value Gap,计算规则如下:
- 若A国申报向B国出口X单位某商品,B国申报从A国进口Y单位同商品,该组配对下的差值为
Y - X - 示例:美国申报向中国出口4个苹果,中国申报从美国进口4个苹果,苹果类别的差值为0;美国申报从中国进口5个橙子,中国申报仅向美国出口4个橙子,橙子类别的差值为1
实际业务场景包含7个国家、10类商品等多维度数据,原有逐行调用的方法效率极低,需要更高效的批量计算方案。
示例数据
# 示例原始数据 Trade.Data <- data.frame( Reporter = c("USA","China","USA", "China"), Partner = c("China","USA","China", "USA"), Flow = c("Export", "Import", "Import", "Export"), Commodity = c("apple", "apple","orange", "orange"), Volume = c(4,4,5,4) ) # 原始数据结构 > Trade.Data Reporter Partner Flow Commodity Volume 1 USA China Export apple 4 2 China USA Import apple 4 3 USA China Import orange 5 4 China USA Export orange 4
预期输出格式
> Value.Gap Reporter Partner Commodity Gap 1 China USA apple 0 2 USA China orange 1
原有低效实现
原有方案通过自定义函数逐组取值计算,扩展性差、运行效率低:
# SO CLUNKY fvalue <- function(dataframe, ReporterCountry, TradeFlow, PartnerCountry, Commodity){ x <- dataframe %>% filter( Reporter == ReporterCountry, Flow == TradeFlow, Partner == PartnerCountry, Commodity == Commodity) print (x$Volume) } USA_import_China_apple <-fvalue(Trade.Data, "USA", "Import", "China", "apple") China_export_USA_apple <- fvalue(Trade.Data, "China", "Export", "USA", "apple") gap_USA_China_apple <- USA_import_China_apple - China_export_USA_apple
高效实现方案
无需循环,通过维度对齐+分组计算即可批量得到所有配对的差值,支持任意数量的国家、商品维度,代码如下:
library(dplyr) Value.Gap <- Trade.Data %>% # 统一维度:提取每笔记录对应的进口国、出口国、对应申报量 mutate( importer = ifelse(Flow == "Import", Reporter, Partner), exporter = ifelse(Flow == "Import", Partner, Reporter), import_vol = ifelse(Flow == "Import", Volume, 0), export_vol = ifelse(Flow == "Export", Volume, 0) ) %>% # 按进口国、出口国、商品分组汇总 group_by(importer, exporter, Commodity) %>% summarise( total_import = sum(import_vol), total_export = sum(export_vol), Gap = total_import - total_export, .groups = "drop" ) %>% # 对齐预期输出的列名 rename(Reporter = importer, Partner = exporter) %>% select(Reporter, Partner, Commodity, Gap)
运行后得到的结果和预期完全一致,且多维度数据下运行效率远高于逐行调用的方案。
内容的提问来源于stack exchange,提问作者CLancaster
相关产品推荐
相关产品推荐

