summarise()
创建一个新的 DataFrame 。它为分组变量的每个组合返回一行;如果没有分组变量,输出将有一行总结输入中的所有观察结果。它将包含每个分组变量的一列和您指定的每个汇总统计数据的一列。
summarise()
和 summarize()
是同义词。
用法
summarise(.data, ..., .by = NULL, .groups = NULL)
summarize(.data, ..., .by = NULL, .groups = NULL)
参数
- .data
-
数据帧、数据帧扩展(例如 tibble)或惰性数据帧(例如来自 dbplyr 或 dtplyr)。有关更多详细信息,请参阅下面的方法。
- ...
-
<
data-masking
> Name-value 汇总函数对。该名称将是结果中变量的名称。该值可以是:
-
长度为 1 的向量,例如
min(x)
、n()
或sum(is.na(y))
。 -
DataFrame ,用于从单个表达式添加多个列。
从 1.1.0 开始,返回大小为 0 或 >1 的值已被弃用。请用
reframe()
为此。 -
- .by
-
<
tidy-select
> (可选)仅针对此操作选择要分组的列,作为group_by()
的替代方案。有关详细信息和示例,请参阅?dplyr_by。 - .groups
-
结果的分组结构。
-
"drop_last":删除最后一级分组。这是 1.0.0 版本之前唯一受支持的选项。
-
"drop":所有级别的分组均被删除。
-
"keep":与
.data
相同的分组结构。 -
"rowwise":每一行都是它自己的组。
当未指定
.groups
时,根据结果的行数选择:-
如果所有结果都有 1 行,您将得到"drop_last"。
-
如果行数变化,您将得到 "keep" (请注意,不推荐返回可变行数,而改为
reframe()
,这也会无条件地删除所有级别的分组)。
此外,一条消息会通知您该选择,除非结果未分组,否则选项 "dplyr.summarise.inform" 设置为
FALSE
,或者当从包中的函数调用summarise()
时。 -
值
通常与 .data
具有相同类型的对象。
-
这些行来自底层
group_keys()
。 -
这些列是分组键和您提供的摘要表达式的组合。
-
分组结构由
.groups=
参数控制,输出可能是另一个grouped_df、tibble或rowwise数据帧。 -
DataFrame 属性不会保留,因为
summarise()
从根本上创建了一个新的 DataFrame 。
后端变化
DataFrame 后端支持创建变量并在同一摘要中使用它。这意味着之前创建的摘要变量可以在摘要内进一步转换或组合,如mutate()
中所示。但是,这也意味着与先前变量同名的汇总变量会覆盖它们,使这些变量不可用于以后的汇总变量。
其他后端可能不支持此行为。为了避免出现意外结果,请考虑为汇总变量使用新名称,尤其是在创建多个汇总时。
方法
该函数是泛型函数,这意味着包可以为其他类提供实现(方法)。有关额外参数和行为差异,请参阅各个方法的文档。
加载的包中当前提供以下方法: dbplyr ( tbl_lazy
)、dplyr ( data.frame
、 grouped_df
、 rowwise_df
) 。
例子
# A summary applied to ungrouped tbl returns a single row
mtcars %>%
summarise(mean = mean(disp), n = n())
#> mean n
#> 1 230.7219 32
# Usually, you'll want to group first
mtcars %>%
group_by(cyl) %>%
summarise(mean = mean(disp), n = n())
#> # A tibble: 3 × 3
#> cyl mean n
#> <dbl> <dbl> <int>
#> 1 4 105. 11
#> 2 6 183. 7
#> 3 8 353. 14
# Each summary call removes one grouping level (since that group
# is now just a single row)
mtcars %>%
group_by(cyl, vs) %>%
summarise(cyl_n = n()) %>%
group_vars()
#> `summarise()` has grouped output by 'cyl'. You can override using the
#> `.groups` argument.
#> [1] "cyl"
# BEWARE: reusing variables may lead to unexpected results
mtcars %>%
group_by(cyl) %>%
summarise(disp = mean(disp), sd = sd(disp))
#> # A tibble: 3 × 3
#> cyl disp sd
#> <dbl> <dbl> <dbl>
#> 1 4 105. NA
#> 2 6 183. NA
#> 3 8 353. NA
# Refer to column names stored as strings with the `.data` pronoun:
var <- "mass"
summarise(starwars, avg = mean(.data[[var]], na.rm = TRUE))
#> # A tibble: 1 × 1
#> avg
#> <dbl>
#> 1 97.3
# Learn more in ?rlang::args_data_masking
# In dplyr 1.1.0, returning multiple rows per group was deprecated in favor
# of `reframe()`, which never messages and always returns an ungrouped
# result:
mtcars %>%
group_by(cyl) %>%
summarise(qs = quantile(disp, c(0.25, 0.75)), prob = c(0.25, 0.75))
#> Warning: Returning more (or less) than 1 row per `summarise()` group was
#> deprecated in dplyr 1.1.0.
#> ℹ Please use `reframe()` instead.
#> ℹ When switching from `summarise()` to `reframe()`, remember that
#> `reframe()` always returns an ungrouped data frame and adjust
#> accordingly.
#> `summarise()` has grouped output by 'cyl'. You can override using the
#> `.groups` argument.
#> # A tibble: 6 × 3
#> # Groups: cyl [3]
#> cyl qs prob
#> <dbl> <dbl> <dbl>
#> 1 4 78.8 0.25
#> 2 4 121. 0.75
#> 3 6 160 0.25
#> 4 6 196. 0.75
#> 5 8 302. 0.25
#> 6 8 390 0.75
# ->
mtcars %>%
group_by(cyl) %>%
reframe(qs = quantile(disp, c(0.25, 0.75)), prob = c(0.25, 0.75))
#> # A tibble: 6 × 3
#> cyl qs prob
#> <dbl> <dbl> <dbl>
#> 1 4 78.8 0.25
#> 2 4 121. 0.75
#> 3 6 160 0.25
#> 4 6 196. 0.75
#> 5 8 302. 0.25
#> 6 8 390 0.75
相关用法
- R dplyr summarise_all 汇总多列
- R dplyr slice 使用行的位置对行进行子集化
- R dplyr sample_n 从表中采样 n 行
- R dplyr starwars 星球大战人物
- R dplyr storms 风暴追踪数据
- R dplyr select_all 选择并重命名一组变量
- R dplyr select 使用列的名称和类型保留或删除列
- R dplyr setops 设置操作
- R dplyr group_trim 修剪分组结构
- R dplyr copy_to 将本地数据帧复制到远程src
- R dplyr consecutive_id 为连续组合生成唯一标识符
- R dplyr row_number 整数排名函数
- R dplyr band_members 乐队成员
- R dplyr mutate-joins 变异连接
- R dplyr nth 从向量中提取第一个、最后一个或第 n 个值
- R dplyr coalesce 找到第一个非缺失元素
- R dplyr group_split 按组分割 DataFrame
- R dplyr mutate 创建、修改和删除列
- R dplyr order_by 用于排序窗口函数输出的辅助函数
- R dplyr context 有关“当前”组或变量的信息
- R dplyr percent_rank 比例排名函数
- R dplyr recode 重新编码值
- R dplyr desc 降序
- R dplyr between 检测值落在指定范围内的位置
- R dplyr cumall 任何、全部和平均值的累积版本
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Summarise each group down to one row。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。