Kolumner med flera värden

Omforma data med tidyr

Jeroen Boeye

Head of Machine Learning, Faktion

Två variabler i en enda kolumn

netflix_df
# A tibble: 637 x 3
   title                  type    duration
   <chr>                  <chr>   <chr>   
 1 Article 15             Movie   125 min 
 2 Kill Me If You Dare    Movie   100 min 
 3 The Spy                TV Show 1 Seasons
 4 The World We Make      Movie   108 min 
 5 Watchman               Movie   93 min
Omforma data med tidyr

Datatyper i separerade kolumner

netflix_df %>% 
  separate(duration, into = c("value", "unit"), convert = TRUE)
# A tibble: 5 x 4
  title               type    value unit  
  <chr>               <chr>   <int> <chr> 
1 Article 15          Movie     125 min   
2 Kill Me If You Dare Movie     100 min   
3 The Spy             TV Show     1 Seasons
4 The World We Make   Movie     108 min   
5 Watchman            Movie      93 min
Omforma data med tidyr

Aggregering med dplyr

netflix_df %>% 
  separate(duration, into = c("value", "unit"), convert = TRUE) %>%
  group_by(type, unit) %>% 
  summarize(mean_duration = mean(value))
# A tibble: 2 x 3
# Groups:   type [2]
  type    unit    mean_duration
  <chr>   <chr>           <dbl>
1 Movie   min             98.6 
2 TV Show Seasons          1.85
Omforma data med tidyr

Separera variabler till kolumner

Kolumn med flera variabler

  En kolumn per variabel

Omforma data med tidyr

Kombinera flera kolumner till en

star_wars_df
# A tibble: 4 x 2
  given_name family_name
  <chr>      <chr>      
1 Luke       Skywalker  
2 Han        Solo       
3 Leia       Organa     
4 R2         D2
Omforma data med tidyr

Kombinera flera kolumner till en

star_wars_df %>%
  unite("name", given_name, family_name)
# A tibble: 4 x 1
  name          
  <chr>         
1 Luke_Skywalker
2 Han_Solo      
3 Leia_Organa   
4 R2_D2
Omforma data med tidyr

Kombinera flera kolumner till en

star_wars_df %>%
  unite("name", given_name, family_name, sep = " ")
# A tibble: 4 x 1
  name          
  <chr>         
1 Luke Skywalker
2 Han Solo      
3 Leia Organa   
4 R2 D2
Omforma data med tidyr

Flera värden i en cell

drink_df
# A tibble: 2 x 2
  drink          ingredients           
  <chr>          <chr>                 
1 Chocolate milk milk, chocolate, sugar
2 Orange juice   oranges, sugar
Omforma data med tidyr

Flera värden i en cell

Netflix-data

Kolumn med flera variabler

Dryckesdata

Cell med flera värden

Omforma data med tidyr

Flera värden i en cell

Netflix-data

Kolumn med flera variabler

Dryckesdata

Cell med flera värden

Värden till variabler

En kolumn per variabel

Omforma data med tidyr

Flera värden i en cell

Netflix-data

Kolumn med flera variabler

Dryckesdata

Cell med flera värden

Värden till variabler

En kolumn per variabel

Värden till observationer

Ett värde per cell

Omforma data med tidyr

Separera värden till rader

drink_df %>% 
  separate_rows(ingredients, sep = ", ")
# A tibble: 5 x 2
  drink          ingredients
  <chr>          <chr>      
1 Chocolate milk milk       
2 Chocolate milk chocolate  
3 Chocolate milk sugar      
4 Orange juice   oranges    
5 Orange juice   sugar
Omforma data med tidyr

Räkna ingredienser

drink_df %>% 
  separate_rows(ingredients, sep = ", ") %>% 
  count(drink)
# A tibble: 2 x 2
  drink              n
  <chr>          <int>
1 Chocolate milk     3
2 Orange juice       2
drink_df %>% 
  separate_rows(ingredients, sep = ", ") %>% 
  count(ingredients)
# A tibble: 4 x 2
  ingredients     n
  <chr>       <int>
1 chocolate       1
2 milk            1
3 oranges         1
4 sugar           2
Omforma data med tidyr

Visualisera ingredienser

drink_df %>% 
  separate_rows(ingredients, sep = ", ") %>% 
  ggplot(aes(x=drink, fill=ingredients)) +
  geom_bar()

Stapeldiagram över ingredienser

Omforma data med tidyr

Nu kör vi en övning!

Omforma data med tidyr

Preparing Video For Download...