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

我想按城市汇总此列表,以及每个其他字段的平均值。如您所见,仅当问题 B 为 1 时才回答问题 C。结果我想要的是:

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

我尝试删除 qB==0 的行,但这会改变 qA 的平均值。有任何想法吗?提前致谢!

4

2 回答 2

3

aggregate, 与参数和. 一起使用。前者告诉不要删除存在 NA 的行;后者是聚合函数应该采取的行动。na.action=na.passna.rm=TRUEaggregate

aggregate(cbind(qA, qB, qC) ~ city, df, mean, na.action=na.pass, na.rm=TRUE)
于 2013-07-08T14:57:33.190 回答
1

其实很简单:

aggregate(xx[-1], by=list(xx$city), FUN=mean, na.rm=TRUE)
于 2013-07-08T14:57:40.400 回答