2013-06-20 2 views
1

DFA_CMO라는 테이블에서 가중 평균 (Views 수 당 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

summaryize를 사용할 때 data.frame 이름을 포함 할 필요가 없습니다. 실제로는 안됩니다. 거기에는 묵시적인'with (...) '가 있습니다. 즉, 열 이름을 로컬 정의 변수 인 것처럼 참조 할 수 있습니다. – Justin

+0

'DFA_CMO'이 표시되지 않습니다. 실제 코드를 표시하고 싶지 않거나 표시하지 않으려면 코드를 실행하는 테이블이나 유사한 vrsion을 게시하십시오. 또한 DFA_CMO에는 5 차원이 있고 그 중 사이트는 무엇을 의미합니까? – Michele

답변

3

으로 전화 할 때 DFA_CMO$<var_name>을 전달하지 마십시오. 그냥 변수 이름을 전달하십시오.

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

이유는 데이터 프레임의 이름을 제공하여, 사용자가 효율적으로 데이터 프레임의 모든 행에 대해, 가중 평균 기능, 즉 값을 고정 벡터를 전달하는 것입니다. 열 이름 만 전달하면 ddply은 각 그룹에 해당하는 행 부분 집합의 컨텍스트에서이를 평가합니다.

+0

답변과 설명에 대해 대단히 감사합니다. – user2506015

+0

잘 작동합니다! – user2506015