當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R dplyr context 有關“當前”組或變量的信息


這些函數返回有關 "current" 組或 "current" 變量的信息,因此僅在特定上下文中工作,例如 summarise()mutate()

  • n() 給出當前組大小。

  • cur_group() 給出組鍵,每個分組變量具有一行和一列的小標題。

  • cur_group_id() 給出當前組的唯一數字標識符。

  • cur_group_rows() 給出當前組的行索引。

  • cur_column() 給出當前列的名稱(僅在 across() 中)。

有關返回所有組值的等效函數,請參閱group_data()

有關在 summarise()mutate() 內使用 tidyselect 語法選擇列子集的方法,請參閱 pick()

用法

n()

cur_group()

cur_group_id()

cur_group_rows()

cur_column()

data.table

如果您熟悉 data.table:

  • cur_group_id() <-> .GRP

  • cur_group() <-> .BY

  • cur_group_rows() <-> .I

請參閱 pick() 了解與 .SD 等效的內容。

例子

df <- tibble(
  g = sample(rep(letters[1:3], 1:3)),
  x = runif(6),
  y = runif(6)
)
gf <- df %>% group_by(g)

gf %>% summarise(n = n())
#> # A tibble: 3 × 2
#>   g         n
#>   <chr> <int>
#> 1 a         1
#> 2 b         2
#> 3 c         3

gf %>% mutate(id = cur_group_id())
#> # A tibble: 6 × 4
#> # Groups:   g [3]
#>   g         x     y    id
#>   <chr> <dbl> <dbl> <int>
#> 1 b     0.549 0.776     2
#> 2 c     0.486 0.584     3
#> 3 b     0.692 0.153     2
#> 4 c     0.524 0.604     3
#> 5 a     0.474 0.174     1
#> 6 c     0.828 0.118     3
gf %>% reframe(row = cur_group_rows())
#> # A tibble: 6 × 2
#>   g       row
#>   <chr> <int>
#> 1 a         5
#> 2 b         1
#> 3 b         3
#> 4 c         2
#> 5 c         4
#> 6 c         6
gf %>% summarise(data = list(cur_group()))
#> # A tibble: 3 × 2
#>   g     data            
#>   <chr> <list>          
#> 1 a     <tibble [1 × 1]>
#> 2 b     <tibble [1 × 1]>
#> 3 c     <tibble [1 × 1]>

gf %>% mutate(across(everything(), ~ paste(cur_column(), round(.x, 2))))
#> # A tibble: 6 × 3
#> # Groups:   g [3]
#>   g     x      y     
#>   <chr> <chr>  <chr> 
#> 1 b     x 0.55 y 0.78
#> 2 c     x 0.49 y 0.58
#> 3 b     x 0.69 y 0.15
#> 4 c     x 0.52 y 0.6 
#> 5 a     x 0.47 y 0.17
#> 6 c     x 0.83 y 0.12
源代碼:R/context.R

相關用法


注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Information about the "current" group or variable。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。