在R语言中基于两个dataframe计算加权平均值的最优方法
R实现方案
你需要的加权平均计算本质是矩阵乘法运算,无需嵌套for循环,直接用R原生的矩阵乘法操作就能一步得到结果,性能远高于循环实现,完全可以覆盖上百个普查片区和多边形的计算需求。
核心逻辑:
- df2的每一列对应单个多边形的各普查片区面积占比权重,df1的每一行对应单个普查片区的各人口统计数据,将df2转置后与df1做矩阵乘法,输出结果就是每个多边形对应的加权统计值。
示例代码如下:
# 先对齐两个数据集的行顺序,保证同一行对应同一个普查片区 df1 <- df1[rownames(df2), ] # 转换为矩阵后做乘法运算 result_mat <- t(as.matrix(df2)) %*% as.matrix(df1) # 转换为data.frame方便后续处理 result_df <- as.data.frame(result_mat)
运行后得到的result_df和你给出的预期结果完全一致,如果你需要保留两位小数,可以加一步格式化:
result_df <- round(result_df, 2)
内容的提问来源于stack exchange,提问作者deathcon501
相关产品推荐
相关产品推荐

