【发布时间】:2015-04-26 03:28:16
【问题描述】:
我有一个包含以下格式的数据框:
manufacturers pricegroup leads
harley <2500 #
honda <5000 #
... ... ..
我正在使用聚合函数通过以下方式提取数据:
aggregate( leads ~ manufacturer + pricegroup, data=leaddata,
FUN=sum, subset=(manufacturer==c("honda","harley")))
我注意到这没有返回正确的总数。我添加到子组中的制造商越多,每个制造商的数字就会越来越小。但是,如果我使用:
aggregate( leads ~ manufacturer + pricegroup, data=leaddata,
FUN=sum, subset=(manufacturer=="honda" | manufacturer=="harley"))
它返回正确的数字。对于我的生活,我无法弄清楚为什么。我只会使用 OR 运算符,但我将动态传递制造商列表。关于为什么第一个构造不起作用的任何想法?更好的是,关于如何使它工作的任何想法?谢谢!
【问题讨论】:
-
==是错误的运算符。使用%in%。例如:subset=manufacturer %in% c("honda","harley") -
啊哈!那成功了。那么 == 到底在做什么呢?
-
交替检查值,而不是检查整个集合。