複数の値を含む列

tidyrでデータを整形する

Jeroen Boeye

Head of Machine Learning, Faktion

1列に2つの変数

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
tidyrでデータを整形する

分割後のデータ型を変換する

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
tidyrでデータを整形する

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
tidyrでデータを整形する

変数を列に分ける

複数の変数を含む列

  変数ごとに1列

tidyrでデータを整形する

複数列を1列に結合する

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
tidyrでデータを整形する

複数列を1列に結合する

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
tidyrでデータを整形する

複数列を1列に結合する

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
tidyrでデータを整形する

1つのセルに複数の値

drink_df
# A tibble: 2 x 2
  drink          ingredients           
  <chr>          <chr>                 
1 Chocolate milk milk, chocolate, sugar
2 Orange juice   oranges, sugar
tidyrでデータを整形する

1つのセルに複数の値

Netflixデータ

複数の変数を含む列

ドリンクデータ

複数の値を含むセル

tidyrでデータを整形する

1つのセルに複数の値

Netflixデータ

複数の変数を含む列

ドリンクデータ

複数の値を含むセル

値から変数へ

変数ごとに1列

tidyrでデータを整形する

1つのセルに複数の値

Netflixデータ

複数の変数を含む列

ドリンクデータ

複数の値を含むセル

値から変数へ

変数ごとに1列

値から観測へ

セルごとに1値

tidyrでデータを整形する

値を行に分割する

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
tidyrでデータを整形する

材料をカウントする

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
tidyrでデータを整形する

材料を可視化する

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

材料の棒グラフ

tidyrでデータを整形する

練習しましょう!

tidyrでデータを整形する

Preparing Video For Download...