什麼是整潔資料?

使用 tidyr 重塑資料

Jeroen Boeye

Head of Machine Learning, Faktion

 

 

幸福的家庭都相似,不幸的家庭各有各的不幸。


Leo Tolstoy

 

整潔的資料集都相似,雜亂的資料集各有各的雜亂。


Hadley Wickham

使用 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 重塑資料

單一欄含多個變數

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 重塑資料

將變數拆成兩欄

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...