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 

似乎对一切均在此显示,而每个站点应该是不同的。 任何想法如何获得正确的值?

+1

使用汇总时,您不需要包含data.frame名称...实际上,您不应该。在那里有一个隐含的“with(...)”,这意味着你可以引用列名,就像它们是本地定义的变量一样。 – Justin

+0

我看不到'DFA_CMO'。如果您不能/不想展示真实的代码,请将您的代码发布到您的代码或类似的版本中。还有(但可能只是我)DFA_CMO有5个维度,其中的网站是什么意思? – Michele

不要通过DFA_CMO$<var_name>致电ddply。只需传递变量名称即可。

ddply(DFA_CMO,.(Site),summarize, 
     wm = weighted.mean(AverageViewingTime, views, ,na.rm=TRUE)) 

的原因是,通过给数据帧的名字,​​你有效地传递固定向量的加权平均函数,即值在数据帧中的所有行。如果仅传递列名称,则ddply将在与每个组对应的那些行子集的上下文中评估它们。

+0

非常感谢你的回答和解释。 – user2506015

+0

现在效果很好! – user2506015