ViewPipeSteps icon indicating copy to clipboard operation
ViewPipeSteps copied to clipboard

Support groups

Open msberends opened this issue 8 years ago • 3 comments

Hey,

This is a really cool package! Feature suggestion: add groups as used by dplyr.

Let's say I would have:

tbl1 <- tibble(
  x = rep(LETTERS[1:6], 3),
  type = paste("Type", c(rep(1, 6), rep(2, 6), rep(3, 6))),
  value = round(runif(18) * 500)
)

And then use with your addin:

tbl1 %>%
  group_by(x) %>%
  summarise(n = n())

This would give me 1 View, namely:

# Tab name: 1. Summarise

      x          n
1     A          3
2     B          3
3     C          3
4     D          3
5     E          3
6     F          3

But it would be great if you would support groups with the dplyr functions group_size and group_vars:

# Tab name: 1. Group by

      group_var min_size max_size
1             x        3        3

# Tab name: 2. Summarise

      x          n
1     A          3
2     B          3
3     C          3
4     D          3
5     E          3
6     F          3

It this example n() is equal to group_size, but that isn't always the case, obviously. Maybe not the best example then :smile:

msberends avatar Feb 26 '18 12:02 msberends

Thanks @msberends!

Interesting, I hadn't thought of that, and I wasn't even aware of group_size and group_vars. I'll have to think about what that would look like.

No View() tabs, but does skimr::skim from the skimr package get you want you want? It would be cool if ViewPipeSteps could pop open three tabs for the below output.

tbl1 <- tibble(
  x = rep(LETTERS[1:6], 3),
  type = paste("Type", c(rep(1, 6), rep(2, 6), rep(3, 6))),
  value = round(runif(18) * 500)
)

tbl1 %>%
  group_by(x) %>%
  skimr::skim()

Skim summary statistics
 n obs: 18 
 n variables: 3 
 group variables: x 

Variable type: character 
  x  var missing complete n min max empty n_unique
1 A type       0        3 3   6   6     0        3
2 B type       0        3 3   6   6     0        3
3 C type       0        3 3   6   6     0        3
4 D type       0        3 3   6   6     0        3
5 E type       0        3 3   6   6     0        3
6 F type       0        3 3   6   6     0        3

Variable type: numeric 
  x   var missing complete n   mean     sd min   p25 median   p75 max     hist
1 A value       0        3 3 166.33 154.12  35  81.5    128 232   336 ▇▁▇▁▁▁▁▇
2 B value       0        3 3 107.33 124.27   9  37.5     66 156.5 247 ▇▇▁▁▁▁▁▇
3 C value       0        3 3 221    208.04  92 101      110 285.5 461 ▇▁▁▁▁▁▁▃
4 D value       0        3 3 386    139.57 229 331      433 464.5 496 ▇▁▁▁▁▁▇▇
5 E value       0        3 3 124.33  53.43  92  93.5     95 140.5 186 ▇▁▁▁▁▁▁▃
6 F value       0        3 3 253    206.87  17 178      339 371   403 ▇▁▁▁▁▁▇▇

daranzolin avatar Feb 27 '18 06:02 daranzolin

That's cool! Didn't know that package. But I like your views better 😉 Just give it some thought, and we'll see what it brings.

msberends avatar Feb 27 '18 14:02 msberends

It has been a while but just for the sake if completeness: The extensions that I just introduced to my fork allow using skimr::skim() to explore grouping issues.

devtools::install_github("joachim-gassen/ViewPipeSteps")
library(tidyverse)
library(ViewPipeSteps)

my_print_cmd <- c(
  "message(title);",
  "skimr::skim_tee(.data = ps%d)"
)

diamonds %>%
  select(carat, cut, color, clarity, price) %>%
  group_by(color) %>%
  print_pipe_steps(my_print_cmd, all = TRUE) %>%
  summarise(n = n(), price = mean(price)) %>%
  arrange(desc(color))

joachim-gassen avatar Oct 27 '19 15:10 joachim-gassen