R ddply和加权平均值
问题描述:
我正试图在名为DFA_CMO的表上计算具有加权平均值(每视图数量的AverageViewingTime)的聚合。 DFA_CMO有5个维度,其中包含网站。R ddply和加权平均值
下面是代码:
ddply(DFA_CMO,.(Site),summarize, wm = weighted.mean(DFA_CMO$AverageViewingTime, DFA_CMO$Views, ,na.rm=TRUE))
但结果是disapointing,因为它显示了每个字段的值相同:
Site wm
1 Advideum 21.17633
2 bbc.com 21.17633
3 Boursorama 21.17633
4 Canal Plus 21.17633
5 CNN Network 21.17633
6 EuronewsFR 21.17633
7 invitemedo.com 21.17633
8 Lfddfdse 21.17633
9 Le Monde 21.17633
10 Les Echos 1 21.17633
11 lopinion.fr 21.17633
12 TF1.fr 21.17633
13 ViadeoFR 21.17633
14 WSJ UK - IBM PE 21.17633
似乎对一切均在此显示,而每个站点应该是不同的。 任何想法如何获得正确的值?
答
不要通过DFA_CMO$<var_name>
致电ddply
。只需传递变量名称即可。
ddply(DFA_CMO,.(Site),summarize,
wm = weighted.mean(AverageViewingTime, views, ,na.rm=TRUE))
的原因是,通过给数据帧的名字,你有效地传递固定向量的加权平均函数,即值在数据帧中的所有行。如果仅传递列名称,则ddply
将在与每个组对应的那些行子集的上下文中评估它们。
+0
非常感谢你的回答和解释。 – user2506015
+0
现在效果很好! – user2506015
使用汇总时,您不需要包含data.frame名称...实际上,您不应该。在那里有一个隐含的“with(...)”,这意味着你可以引用列名,就像它们是本地定义的变量一样。 – Justin
我看不到'DFA_CMO'。如果您不能/不想展示真实的代码,请将您的代码发布到您的代码或类似的版本中。还有(但可能只是我)DFA_CMO有5个维度,其中的网站是什么意思? – Michele