2013-06-20 211 views
1

我正試圖在名爲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

回答

3

不要通過DFA_CMO$<var_name>致電ddply。只需傳遞變量名稱即可。

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

的原因是,通過給數據幀的名字,​​你有效地傳遞固定向量的加權平均函數,即值在數據幀中的所有行。如果僅傳遞列名稱,則ddply將在與每個組對應的那些行子集的上下文中評估它們。

+0

非常感謝你的回答和解釋。 – user2506015

+0

現在效果很好! – user2506015