整然データとは?

tidyrでデータを整形する

Jeroen Boeye

Head of Machine Learning, Faktion

 

 

「幸福な家庭はどれも似ているが、不幸な家庭はそれぞれに不幸である。」


レフ・トルストイ

 

「整然なデータはどれも似ているが、乱雑なデータはそれぞれに乱雑である。」


ハドリー・ウィッカム

tidyrでデータを整形する

長方形データ

 

構造

  • セル

 

整然なサンプル

tidyrでデータを整形する

整然データ:変数

 

構造

  • 列は変数
  • セル

 

整然なサンプルの変数

tidyrでデータを整形する

整然データ:観測

 

構造

  • 列は変数
  • 行は観測
  • セル

 

整然なサンプルの観測

tidyrでデータを整形する

整然データ:値

 

構造

  • 列は変数
  • 行は観測
  • セルは値

 

整然なサンプルの値

tidyrでデータを整形する

dplyr 復習

character_df
# A tibble: 4 x 3
  name           homeworld species
  <chr>          <chr>     <chr>  
1 Luke Skywalker Tatooine  Human  
2 R2-D2          Naboo     Droid  
3 Darth Vader    Tatooine  Human  
4 Obi-Wan Kenobi Stewjon   Human
tidyrでデータを整形する

dplyr 復習: select()

character_df %>% 
  select(name, homeworld)
# A tibble: 4 x 2
  name           homeworld
  <chr>          <chr>    
1 Luke Skywalker Tatooine 
2 R2-D2          Naboo    
3 Darth Vader    Tatooine 
4 Obi-Wan Kenobi Stewjon
tidyrでデータを整形する

dplyr 復習: filter()

character_df %>% 
  filter(homeworld == "Tatooine")
# A tibble: 2 x 3
  name           homeworld species
  <chr>          <chr>     <chr>  
1 Luke Skywalker Tatooine  Human  
2 Darth Vader    Tatooine  Human
tidyrでデータを整形する

dplyr 復習: mutate()

character_df %>% 
  mutate(is_human = species == "Human")
# A tibble: 4 x 4
  name           homeworld species is_human
  <chr>          <chr>     <chr>   <lgl>   
1 Luke Skywalker Tatooine  Human   TRUE    
2 R2-D2          Naboo     Droid   FALSE   
3 Darth Vader    Tatooine  Human   TRUE    
4 Obi-Wan Kenobi Stewjon   Human   TRUE
tidyrでデータを整形する

dplyr 復習: group_by() と summarize()

character_df %>% 
  group_by(homeworld) %>% 
  summarize(n = n())
# A tibble: 3 x 2
  homeworld     n
  <chr>     <int>
1 Naboo         1
2 Stewjon       1
3 Tatooine      2
tidyrでデータを整形する

magrittr ロゴ

1 magrittr.tidyverse.org
tidyrでデータを整形する

 

dplyr ロゴ

 

tidyr ロゴ

1 www.tidyverse.org
tidyrでデータを整形する

1 列に複数の変数がある場合

population_df
# A tibble: 4 x 2
  country                 population
  <chr>                        <dbl>
1 Brazil, South America        210. 
2 Nepal, Asia                   28.1
3 Senegal, Africa               15.8
4 Australia, Oceania            25.0
tidyrでデータを整形する

2 列に分割して変数を分ける

population_df %>% 
  separate(country, into = c("country", "continent"), sep = ", ")
# A tibble: 4 x 3
  country   continent      population
  <chr>     <chr>               <dbl>
1 Brazil    South America       210. 
2 Nepal     Asia                 28.1
3 Senegal   Africa               15.8
4 Australia Oceania              25.0
tidyrでデータを整形する

練習しましょう!

tidyrでデータを整形する

Preparing Video For Download...