Examples for 'tidyr::chop'


Chop and unchop

Aliases: chop unchop

Keywords:

### ** Examples

# Chop ==============================================================
df <- tibble(x = c(1, 1, 1, 2, 2, 3), y = 1:6, z = 6:1)
# Note that we get one row of output for each unique combination of
# non-chopped variables
df %>% chop(c(y, z))
# A tibble: 3 × 3
      x           y           z
  <dbl> <list<int>> <list<int>>
1     1         [3]         [3]
2     2         [2]         [2]
3     3         [1]         [1]
# cf nest
df %>% nest(data = c(y, z))
# A tibble: 3 × 2
      x data            
  <dbl> <list>          
1     1 <tibble [3 × 2]>
2     2 <tibble [2 × 2]>
3     3 <tibble [1 × 2]>
# Unchop ============================================================
df <- tibble(x = 1:4, y = list(integer(), 1L, 1:2, 1:3))
df %>% unchop(y)
# A tibble: 6 × 2
      x     y
  <int> <int>
1     2     1
2     3     1
3     3     2
4     4     1
5     4     2
6     4     3
df %>% unchop(y, keep_empty = TRUE)
# A tibble: 7 × 2
      x     y
  <int> <int>
1     1    NA
2     2     1
3     3     1
4     3     2
5     4     1
6     4     2
7     4     3
# Incompatible types -------------------------------------------------
# If the list-col contains types that can not be natively
df <- tibble(x = 1:2, y = list("1", 1:3))
try(df %>% unchop(y))
Error in list_unchop(x = x, indices = indices, ptype = ptype, name_spec = name_spec,  : 
  Can't combine `x[[1]]` <character> and `x[[2]]` <integer>.
# Unchopping data frames -----------------------------------------------------
# Unchopping a list-col of data frames must generate a df-col because
# unchop leaves the column names unchanged
df <- tibble(x = 1:3, y = list(NULL, tibble(x = 1), tibble(y = 1:2)))
df %>% unchop(y)
# A tibble: 3 × 2
      x   y$x    $y
  <int> <dbl> <int>
1     2     1    NA
2     3    NA     1
3     3    NA     2
df %>% unchop(y, keep_empty = TRUE)
# A tibble: 4 × 2
      x   y$x    $y
  <int> <dbl> <int>
1     1    NA    NA
2     2     1    NA
3     3    NA     1
4     3    NA     2

[Package tidyr version 1.2.0 Index]