【发布时间】:2015-09-16 19:42:02
【问题描述】:
我有一个优惠券使用数据集,范围从 0 到任何正值。
我想用 dplyr 来汇总数据。
但是,我注意到汇总函数的顺序会影响平均计算。首先计算平均值时,如下面的A,输出是正确的(所有非零票券的平均值为18.333)。
但是,当最后一次计算平均值时,例如在下面的 B 中,输出不正确(它显示所有非零优惠券的平均值为 6)。谁能解释发生了什么以及如何修复下面的 B 以显示正确答案?
数据集
library(dplyr)
CouponDF <- data.frame(Coupon = c(0,0,10,10,20,40,20,10))
一个
CouponDF %>%
summarise(
AvgCoupon = mean(Coupon[Coupon>0]),
NoCoupon = sum(Coupon==0),
Coupon = sum(Coupon>0)
)
输出
AvgCoupon NoCoupon Coupon
1 18.33333 2 6
B
CouponDF %>%
summarise(
NoCoupon = sum(Coupon==0),
Coupon = sum(Coupon>0),
AvgCoupon = mean(Coupon[Coupon>0]))
输出
NoCoupon Coupon AvgCoupon
1 2 6 6
【问题讨论】: