重叠区域分类下基于排放数据的国家归属权重计算需求
重叠区域国家排放权重计算实现
核心计算逻辑为:各区域权重独立计算,单个国家在对应区域的权重 = 该国排放量 / 该区域所有国家的总排放量,天然兼容「欧洲/欧盟」「全球」这类存在范围重叠的分类规则。
完整可运行代码如下:
library(tidyverse) # 区域-国家映射表 RegionMap = tribble( ~ISO, ~Region, "USA", "NAM", "CAN", "NAM", "FRA", "EUR", "DEU", "EUR", "UKR", "EUR", "FRA", "EUU", "DEU", "EUU" ) # 国家排放数据表 Emissions = tribble( ~ISO, ~Emissions, "USA", 1200, "CAN", 600, "FRA", 300, "DEU", 800, "UKR", 500 ) # 权重计算 Weights <- RegionMap %>% # 匹配每个国家的排放数据 left_join(Emissions, by = "ISO") %>% # 按区域分组统计区域总排放 group_by(Region) %>% mutate(Weight = Emissions / sum(Emissions, na.rm = TRUE)) %>% # 输出目标字段 select(ISO, Region, Weight) %>% ungroup()
运行后得到的结果如下,完全匹配预期输出格式:
# A tibble: 7 × 3 ISO Region Weight <chr> <chr> <dbl> 1 USA NAM 0.75 2 CAN NAM 0.25 3 FRA EUR 0.1875 4 DEU EUR 0.5 5 UKR EUR 0.3125 6 FRA EUU 0.273 7 DEU EUU 0.727
如果需要纳入「全球(World)」分类,只需在RegionMap中补充所有国家对应Region为World的映射行即可,无需修改计算逻辑。
内容的提问来源于stack exchange,提问作者Stephen Stretton
相关产品推荐
相关产品推荐

