library(tidyverse)
## Loading tidyverse: ggplot2
## Loading tidyverse: tibble
## Loading tidyverse: tidyr
## Loading tidyverse: readr
## Loading tidyverse: purrr
## Loading tidyverse: dplyr
## Conflicts with tidy packages ----------------------------------------------
## filter(): dplyr, stats
## lag():    dplyr, stats
data <- tibble(
  a = 1:3,
  b = c("1,2", "4,6,8", "4,2,1,9,6,5,2")
)

is_eligible <- function(x) {
  grepl("(^|,)9(,|$)", x)
}

data %>%
  filter(is_eligible(b)) %>%
  select(-b)
## # A tibble: 1 x 1
##       a
##   <int>
## 1     3
data %>%
  mutate(list_of_values = strsplit(b, ",")) %>%
  select(-b)
## # A tibble: 3 x 2
##       a list_of_values
##   <int> <list>        
## 1     1 <chr [2]>     
## 2     2 <chr [3]>     
## 3     3 <chr [7]>
data %>%
  mutate(list_of_values = strsplit(b, ",")) %>%
  select(-b) %>%
  unnest()
## # A tibble: 12 x 2
##        a list_of_values
##    <int> <chr>         
##  1     1 1             
##  2     1 2             
##  3     2 4             
##  4     2 6             
##  5     2 8             
##  6     3 4             
##  7     3 2             
##  8     3 1             
##  9     3 9             
## 10     3 6             
## 11     3 5             
## 12     3 2
nested_unnested <-
  data %>%
  mutate(list_of_values = strsplit(b, ",")) %>%
  select(-b) %>%
  unnest() %>%
  nest(-a)

nested_unnested$data
## [[1]]
## # A tibble: 2 x 1
##   list_of_values
##   <chr>         
## 1 1             
## 2 2             
## 
## [[2]]
## # A tibble: 3 x 1
##   list_of_values
##   <chr>         
## 1 4             
## 2 6             
## 3 8             
## 
## [[3]]
## # A tibble: 7 x 1
##   list_of_values
##   <chr>         
## 1 4             
## 2 2             
## 3 1             
## 4 9             
## 5 6             
## 6 5             
## 7 2
nested_unnested$data[[1]]
## # A tibble: 2 x 1
##   list_of_values
##   <chr>         
## 1 1             
## 2 2

Copyright © 2017 Kirill Müller. Licensed under CC BY-NC 4.0.