group_by()和sumparize()保留值而不分组的值

发布于 2025-02-09 08:10:28 字数 3196 浏览 4 评论 0原文

我想总结两个创建组的值,并保留总样本的值。

到目前为止,我到目前为止:

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

在2022-06-22创建的 reprex package (v2.0.1(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

我可以在一个管道中进行吗?

I want to summarise values of two created groups and keep the values of the total sample.

What I have so far:

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"), "(.*)_([^_]+)
quot;) |>
  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

Created on 2022-06-22 by the reprex package (v2.0.1)

I want to add a column Total with all values of the sample (big_four 0 and 1 together)

Like this:

#>         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

Can I do it in one pipeline ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

巡山小妖精 2025-02-16 08:10:28

您可以尝试

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

You may try

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"), "(.*)_([^_]+)
quot;) |>
  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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文