此问题基于How do I calculate a grouped z score in R using dplyr?。
此处数据按比例缩放(zscores),用于不同的组和未分组。
dat = iris %>%
gather(variable, value, -Species) %>%
group_by(Species, variable) %>%
mutate(z_score_group = (value - mean(value)) / sd(value)) %>%
ungroup %>%
mutate(z_score_ungrouped = (value - mean(value)) / sd(value))
缩放未分组会保留数据的顺序。
> identical(order(dat$z_score_ungrouped), order(dat$value))
[1] TRUE
然而,有趣的是,数据通过缩放组来改变他们的顺序。
> identical(order(dat$z_score_group), order(dat$value))
[1] FALSE
在我看来,缩放不应该改变数据的顺序,因为这会对基于秩的分析(例如ROC曲线)产生巨大影响。有没有人知道为什么分组会改变顺序?