为什么dplyr :: do()允许。引用当前组,但dplyr :: summarize()不是?

时间:2017-06-11 15:43:40

标签: r dplyr

我目前正在考虑dplyr中我似乎无法理解的特定行为。对于分组数据,do允许对当前组进行.操作,但在summarise .中指的是整个数据而不是每个组。为什么会这样?

library(dplyr)
df <- data.frame( 
  hour     = factor(rep(1:24, each = 21)),
  price    = runif(504, min = -10, max = 125)
)

df %>% group_by(hour) %>% 
  summarise(mean(price))
# # A tibble: 24 x 2
#     hour `mean(price)`
#   <fctr>         <dbl>
# 1      1      58.78788
# 2      2      55.51119
# 3      3      54.44470
# [...]


df %>% group_by(hour) %>% 
  summarise(mean(.$price))
# # A tibble: 24 x 2
#      hour `mean(.$price)`
#    <fctr>           <dbl>
#  1      1        54.66447
#  2      2        54.66447
#  3      3        54.66447
# [...]

mean(df$price)
# [1] 54.66447


df %>% group_by(hour) %>% 
  do(as.data.frame(mean(.$price)))
# # A tibble: 24 x 2
# # Groups:   hour [24]
#      hour `mean(.$price)`
#    <fctr>           <dbl>
#  1      1        58.78788
#  2      2        55.51119
#  3      3        54.44470
# [...]

可以看出,只有summarise没有.do只有.会产生预期的结果(即聚合在分组变量上)。 summarise .仅返回整体mean

我知道为什么问题对于SO来说可能不是最合适的问题,但是因为dplyr应该是直观的,这对我来说似乎并不直观,我希望这没关系。

0 个答案:

没有答案