2013-07-08 43 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 

我想按城市彙總此列表,每個字段的平均值。正如你所看到的,問題C僅回答如果問題B爲1。我想要什麼,結果是:如何在R中忽略某些行的某些行而不忽略其他行?

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

我試圖消除與QB == 0線,但這將改變QA平均。有任何想法嗎?提前致謝!

回答

1

這是很簡單的實際上是:

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

謝謝!兩個都很好! – Rodrigo

+0

好消息! :) – asb

+0

@洪:感謝編輯。 – asb

3

使用aggregate,的論據na.action=na.passna.rm=TRUE。前者告訴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