dplyr 组不使用美元符号 data$column 语法

dplyr groups not working with dollar sign data$column syntax

我正在寻找每个组的列的最小值和最大值:

mtcars %>%
  group_by(mtcars$cyl) %>%
  summarize(
    min_mpg = min(mtcars$mpg),
    max_mpg = max(mtcars$mpg)
  )
# # A tibble: 3 x 3
#   `mtcars$cyl` min_mpg max_mpg
#          <dbl>   <dbl>   <dbl>
# 1            4    10.4    33.9
# 2            6    10.4    33.9
# 3            8    10.4    33.9

它在大部分情况下都有效,数据集的格式看起来不错。但是,它给出了整个数据集的最小值和最大值,而不是每个单独的组。

不要在 dplyr 函数中使用 $,它们需要不带引号的列名。

mtcars$mpg 专门引用原始输入数据框的整个列,而不是来自 group_by 的分组小标题。更改您的代码以删除 data$,它将起作用:

mtcars %>%
  group_by(cyl) %>%
  summarize(
    min_mpg = min(mpg),
    max_mpg = max(mpg)
  )
# # A tibble: 3 x 3
#     cyl min_mpg max_mpg
#   <dbl>   <dbl>   <dbl>
# 1     4    21.4    33.9
# 2     6    17.8    21.4
# 3     8    10.4    19.2

(更不用说打字少了很多!)