여러 값을 가진 열

tidyr로 데이터 재구조화하기

Jeroen Boeye

Head of Machine Learning, Faktion

하나의 열에 두 변수

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로 데이터 재구조화하기

변수를 열로 분리하기

여러 변수가 있는 열

  변수당 한 열

tidyr로 데이터 재구조화하기

여러 열을 하나로 결합하기

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로 데이터 재구조화하기

여러 열을 하나로 결합하기

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로 데이터 재구조화하기

여러 열을 하나로 결합하기

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로 데이터 재구조화하기

한 셀에 여러 값

drink_df
# A tibble: 2 x 2
  drink          ingredients           
  <chr>          <chr>                 
1 Chocolate milk milk, chocolate, sugar
2 Orange juice   oranges, sugar
tidyr로 데이터 재구조화하기

한 셀에 여러 값

Netflix 데이터

여러 변수가 있는 열

음료 데이터

여러 값이 있는 셀

tidyr로 데이터 재구조화하기

한 셀에 여러 값

Netflix 데이터

여러 변수가 있는 열

음료 데이터

여러 값이 있는 셀

값 → 변수

변수당 한 열

tidyr로 데이터 재구조화하기

한 셀에 여러 값

Netflix 데이터

여러 변수가 있는 열

음료 데이터

여러 값이 있는 셀

값 → 변수

변수당 한 열

값 → 관측값

셀당 한 값

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로 데이터 재구조화하기

Ayo berlatih!

tidyr로 데이터 재구조화하기

Preparing Video For Download...