当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R dtplyr summarise.dtplyr_step 将每组汇总为一行


这是 dplyr summarise() 泛型的方法。它被转换为 [.data.tablej 参数。

用法

# S3 method for dtplyr_step
summarise(.data, ..., .by = NULL, .groups = NULL)

参数

.data

一个lazy_dt()

...

< data-masking > Name-value 汇总函数对。该名称将是结果中变量的名称。

该值可以是:

  • 长度为 1 的向量,例如min(x)n()sum(is.na(y))

  • DataFrame ,用于从单个表达式添加多个列。

[Deprecated]从 1.1.0 开始,返回大小为 0 或 >1 的值已被弃用。请用reframe()为此。

.by

[Experimental]

< 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() 时。

例子

library(dplyr, warn.conflicts = FALSE)

dt <- lazy_dt(mtcars)

dt %>%
  group_by(cyl) %>%
  summarise(vs = mean(vs))
#> Source: local data table [3 x 2]
#> Call:   `_DT38`[, .(vs = mean(vs)), keyby = .(cyl)]
#> 
#>     cyl    vs
#>   <dbl> <dbl>
#> 1     4 0.909
#> 2     6 0.571
#> 3     8 0    
#> 
#> # Use as.data.table()/as.data.frame()/as_tibble() to access results

dt %>%
  group_by(cyl) %>%
  summarise(across(disp:wt, mean))
#> Source: local data table [3 x 5]
#> Call:   `_DT38`[, .(disp = mean(disp), hp = mean(hp), drat = mean(drat), 
#>     wt = mean(wt)), keyby = .(cyl)]
#> 
#>     cyl  disp    hp  drat    wt
#>   <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1     4  105.  82.6  4.07  2.29
#> 2     6  183. 122.   3.59  3.12
#> 3     8  353. 209.   3.23  4.00
#> 
#> # Use as.data.table()/as.data.frame()/as_tibble() to access results

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Summarise each group to one row。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。