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

R语言中在dataframe内批量计算多变量加权平均值的高效方法

R 批量计算多列加权平均值的实现方法

方法1:基础R实现(无需额外安装包)

首先定位需要计算的目标国家列,再批量调用加权平均函数:

# 筛选目标列:排除非国家的id、年份、权重列
target_cols <- setdiff(colnames(df), c("id", "year", "weight"))
# 若国家列有统一命名规则,也可使用正则匹配筛选,例如:target_cols <- grep("^[a-z]+", colnames(df), value = TRUE)

# 批量计算所有国家列的加权平均值,返回命名向量
weighted_means <- sapply(df[target_cols], function(col) weighted.mean(col, w = df$weight))

运行后直接输出weighted_means即可查看每个国家对应的加权平均结果。

方法2:tidyverse 实现(输出结构化表格,支持扩展分组计算)

如果习惯使用tidyverse生态的语法,用dplyr的across函数可以更方便完成计算,且结果直接为表格格式,方便后续处理:

library(dplyr)

# 批量计算加权均值,返回1行的结果表
result <- df %>%
  summarise(across(all_of(target_cols), ~ weighted.mean(.x, w = weight)))

# 如果需要按年份等维度分组计算,仅需增加group_by步骤即可
result_by_year <- df %>%
  group_by(year) %>%
  summarise(across(all_of(target_cols), ~ weighted.mean(.x, w = weight)))

效率说明

两种实现均为向量化运算,就算有上百个目标列、数十万行数据也能高效运行,完全可以满足30+列的批量计算需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:09:01