2013-07-08 1 views
0
city qA qB qC 
0001 1 1 5 
0001 3 1 3 
0002 2 0 NA 
0002 2 0 NA 
0002 4 1 1 
0002 4 1 3 

이 목록을 각 필드의 평균값과 함께 도시별로 협의하고 싶습니다.일부 필드에 대해 일부 행을 무시하고 다른 필드에 대해 무시하지 않고 집계하는 방법은 무엇입니까?

city qA qB qC 
0001 2 1 4 
0002 3 0.5 2 

내가 쿼터백 == 0 선을 제거했지만,이 품질 보증에 대한 평균을 변경됩니다 : 당신이 볼 수 있듯이, 질문 C는 질문 B는 결과이기 때문에 내가 원하는 1 인 경우 대한 답변 . 어떤 아이디어? 미리 감사드립니다! 모두 인수 na.action=na.passna.rm=TRUE

답변

1

그것은 실제로 매우 간단합니다 :

aggregate(xx[-1], by=list(xx$city), FUN=mean, na.rm=TRUE) 
+0

감사합니다. 둘 다 괜찮 았어! – Rodrigo

+0

좋은 소식 !! :) – asb

+0

@ 홍콩 : 편집 해 주셔서 감사합니다. – asb

3

사용 aggregate. 전자는 aggregate에 NAs가있는 행을 제거하지 않는다고 알려줍니다. 후자는 집계 함수가 취해야하는 동작입니다.

aggregate(cbind(qA, qB, qC) ~ city, df, mean, na.action=na.pass, na.rm=TRUE) 
+0

감사합니다! 둘 다 괜찮 았어! – Rodrigo

+0

na.rm = TRUE 인 경우 평균 계산에서 값만 제거됩니다 (목록의 전체 행이 아님). na.action = na.pass가 불필요하게되지는 않습니까? – Rodrigo

관련 문제