簡體   English   中英

group_by() 和 summarise() 保留值而不分組

[英]group_by() and summarise() keeping the values without grouping

我想總結兩個創建組的值並保留總樣本的值。

到目前為止我所擁有的:

data <- structure(list(big_four = c(0L, 0L, 0L, 1L, 1L, 0L), idade_em_2022 = c(46L,38L, 40L, 23L, 27L, 27L), total_de_cooperados = c(8665L, 2198L, 2338L, 3017L, 19608L, 27515L), numeroAgencias = c(8L, 5L, 0L, 4L, 19L, 29L)), row.names = c(NA, 6L), class = "data.frame")

data |>
  dplyr::group_by(big_four) |>
  dplyr::filter(
    !is.na(idade_em_2022 & total_de_cooperados)
  ) |>
  dplyr::summarise_at(
    dplyr::vars(idade_em_2022, total_de_cooperados, numeroAgencias),
    list(
      minimo = min,
      media = mean,
      maximo = max,
      desvio = sd
    )
  ) |> 
  t() |>
  as.data.frame(, -1) |>
  dplyr::arrange() |>
  dplyr::rename(n_BigFour = 1, BigFour = 2) |>
  tibble::rownames_to_column("variavel") |>
  tidyr::extract("variavel", into = c("caracteristica", "condicao"), "(.*)_([^_]+)$") |>
  dplyr::arrange(caracteristica) |>
  print()
#>         caracteristica condicao    n_BigFour      BigFour
#> 1                  big     four     0.000000     1.000000
#> 2        idade_em_2022   minimo    27.000000    23.000000
#> 3        idade_em_2022    media    37.750000    25.000000
#> 4        idade_em_2022   maximo    46.000000    27.000000
#> 5        idade_em_2022   desvio     7.932003     2.828427
#> 6       numeroAgencias   minimo     0.000000     4.000000
#> 7       numeroAgencias    media    10.500000    11.500000
#> 8       numeroAgencias   maximo    29.000000    19.000000
#> 9       numeroAgencias   desvio    12.767145    10.606602
#> 10 total_de_cooperados   minimo  2198.000000  3017.000000
#> 11 total_de_cooperados    media 10179.000000 11312.500000
#> 12 total_de_cooperados   maximo 27515.000000 19608.000000
#> 13 total_de_cooperados   desvio 11944.409208 11731.608607

reprex 包於 2022-06-22 創建 (v2.0.1)

我想添加一個包含樣本所有值的Total列(big_four 0 和 1 一起)

像這樣:

#>         caracteristica condicao    n_BigFour      BigFour Total
#> 1                  big     four     0.000000     1.000000  0 and 1
#> 2        idade_em_2022   minimo    27.000000    23.000000   23
#> 3        idade_em_2022    media    37.750000    25.000000   28
#> 4        idade_em_2022   maximo    46.000000    27.000000   46
#> 5        idade_em_2022   desvio     7.932003     2.828427   9.9
#> 6       numeroAgencias   minimo     0.000000     4.000000   0
#> 7       numeroAgencias    media    10.500000    11.500000   10.8
#> 8       numeroAgencias   maximo    29.000000    19.000000   29
#> 9       numeroAgencias   desvio    12.767145    10.606602   10.9
#> 10 total_de_cooperados   minimo  2198.000000  3017.000000   2198
#> 11 total_de_cooperados    media 10179.000000 11312.500000   10556
#> 12 total_de_cooperados   maximo 27515.000000 19608.000000   27515
#> 13 total_de_cooperados   desvio 11944.409208 11731.608607   10652

我可以在一個管道中完成嗎?

你可以試試

data |>
  mutate(big_four = paste0(c(unique(big_four)), collapse = " and ")) |>
  rbind(data) |>
  dplyr::group_by(big_four) |>
  dplyr::filter(
    !is.na(idade_em_2022 & total_de_cooperados)
  ) |>
  dplyr::summarise_at(
    dplyr::vars(idade_em_2022, total_de_cooperados, numeroAgencias),
    list(
      minimo = min,
      media = mean,
      maximo = max,
      desvio = sd
    )
  ) |> 
  t() |>
  as.data.frame(, -1) |>
  dplyr::arrange() |>
  dplyr::rename(n_BigFour = 1, BigFour = 3, total = 2) |>
  tibble::rownames_to_column("variavel") |>
  tidyr::extract("variavel", into = c("caracteristica", "condicao"), "(.*)_([^_]+)$") |>
  dplyr::arrange(caracteristica) %>%
  relocate(total, .after = BigFour)

        caracteristica condicao n_BigFour  BigFour    total
1                  big     four         0        1  0 and 1
2        idade_em_2022   minimo        27       23       23
3        idade_em_2022    media     37.75    25.00    33.50
4        idade_em_2022   maximo        46       27       46
5        idade_em_2022   desvio  7.932003 2.828427 9.093954
6       numeroAgencias   minimo         0        4        0
7       numeroAgencias    media  10.50000 11.50000 10.83333
8       numeroAgencias   maximo        29       19       29
9       numeroAgencias   desvio  12.76715 10.60660 10.98029
10 total_de_cooperados   minimo      2198     3017     2198
11 total_de_cooperados    media  10179.00 11312.50 10556.83
12 total_de_cooperados   maximo     27515    19608    27515
13 total_de_cooperados   desvio  11944.41 11731.61 10652.23

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM