You need to enable JavaScript to run this app. R语言如何依据DF2的权重对DF1的对应指标列执行加权相乘计算
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何依据DF2的权重对DF1的对应指标列执行加权相乘计算

Pandas(Python) 实现方案

核心思路是先将DF2转换为「指标名: 权重」的映射结构,再对DF1的指标列做批量匹配乘法,非指标字段保留原值。

  1. 构造权重映射字典
import pandas as pd
# 将DF2的Indicators列转为索引,提取Weight列转为字典
weight_map = DF2.set_index('Indicators')['Weight'].to_dict()
  1. 筛选待计算的指标列
# 不需要参与计算的字段,根据实际情况调整
non_calc_cols = ['Country', 'Year']
# 提取所有需要乘权重的指标列
indicator_cols = [col for col in DF1.columns if col not in non_calc_cols]
  1. 批量计算加权值
# 对应列匹配权重相乘,直接修改原DF1的指标列,也可以赋值给新的DataFrame
DF1[indicator_cols] = DF1[indicator_cols].mul(pd.Series(weight_map))

效果验证(对应示例场景):
输入DF1行数据:Country=Brazil、Year=2015、Indicator 1=0.34、Indicator 2=0.76
输入DF2权重:Indicator 1=0.5、Indicator 2=0.2
输出结果行:Country=Brazil、Year=2015、Indicator 1=0.17、Indicator 2=0.152

R 实现方案
library(dplyr)
library(tibble)

# 把DF2转为指标名为键、权重为值的命名向量
weight_vec <- deframe(DF2)

# 对所有指标列批量乘对应权重
result <- DF1 %>%
  mutate(across(all_of(names(weight_vec)), ~ .x * weight_vec[cur_column()]))
注意事项
  • 需保证DF2的Indicators取值和DF1的指标列名完全一致,大小写、空格、拼写差异会导致匹配失败出现空值
  • 若存在DF1指标列未在DF2中记录权重的情况,可提前过滤列或补充默认权重避免计算异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 19:54:04