如何在R中将lapply计算的均值作为新列添加到列表各dataframe中?
为列表中的每个DataFrame添加加权均值列
方法1:基于已计算的均值列表添加列
你已经得到了各分组的加权均值列表Mean,可以用Map()函数将每个DataFrame与对应的均值配对,快速新增Mean列:
# 为每个DataFrame添加填充好均值的Mean列 List_with_mean <- Map(function(df, mean_val) { df$Mean <- mean_val df }, List, Mean)
Map()会自动按顺序匹配List中的DataFrame和Mean中的均值,给每个DataFrame的所有行填充对应分组的加权均值。
方法2:一步完成计算与列添加(更简洁高效)
如果不需要单独保留Mean列表,也可以直接在lapply()中同时完成加权均值计算和列添加,省去中间变量:
List_with_mean <- lapply(List, function(x) { # 计算当前分组的加权均值 weighted_mean <- weighted.mean(x$Value, w = x$Count / sum(x$Count), na.rm = TRUE) # 新增Mean列并填充均值 x$Mean <- weighted_mean x })
验证结果
可以查看任意分组的结果,确认Mean列是否正确填充:
# 查看分组A的处理结果 print(List_with_mean$A)
输出示例:
Set Value Count Mean 1 A 1 10 2.090909 4 A 4 13 2.090909 7 A 7 16 2.090909
内容的提问来源于stack exchange,提问作者Mikin
相关产品推荐
相关产品推荐

