2017年7月5日

Tidy Data 整潔的數據

本篇文章是閱讀Hadley Wickham的Tidy data一文之心得,截圖來自該篇文章,特此說明。

在進行數據分析的時候,資料整理的格式十分重要,基本原則有三
每一個變數(variable)形成一欄
每一觀察值(observation)形成一列
每一種觀測單位形成一個表格
1. Each variable forms a column.
2. Each observation forms a row.
3. Each type of observational unit forms a table.



以下的表一和表二,都是同樣的資料,但是紀錄的方式卻不相同。這個表格中一共有三種變數(人名、treatment、結果的數量),觀察值有6個(如果缺失值不計,則為5個)




如果以tidy data的目標來轉換,會成為這樣的表格,每一欄都是一個變數,每一列都是一筆觀察值。






混亂的資料集( messy data)常見的問題有以下幾點
  • 欄標題是數值,而不是變數名稱
  • 多個變數在同一欄
  • 變數同時在欄和列
  • 多種觀察單位存在同一張表格
  • 單一觀察單位存在多個表格
原文
  •  Column headers are values, not variable names.
  •  Multiple variables are stored in one column.
  •  Variables are stored in both rows and columns.
  •  Multiple types of observational units are stored in the same table.
  •  A single observational unit is stored in multiple tables.

欄標題是數值,而不是變數名稱

以下這個例子就是欄標題不是用變數,而是用了數值。這是一個宗教對應收入的表格,左邊一欄是宗教,右邊六欄都是收入的「數值」。這個資料夾其實有三種變數,宗教、收入、數量



轉成tidy data應該變成這樣






欄標題非變數的另外一個例子。這是音樂排行榜的例子,右邊三欄分別是第一週、第二週、第三週的排名,實際上右邊會延長很多到第75週




轉變成tidy data之後是這樣,把上表的週和排名變為兩欄




多個變數在同一欄
這個例子中的欄標題,m014,代表了male,0歲到14歲。所以同一欄裡頭就有兩個不同的變數,最右邊的f014則是female,0-14歲。仔細觀察這個表,其實變數有五個,country、year、sex、age、cases




轉換成tidy data的過程,先做成左邊之後,再把性別一變數獨立出來一欄,成為五欄的tidy data(下右圖)





變數同時在欄和列
這是某個天氣站的氣溫觀察紀錄,d1代表第一天(右邊其實還有d9-d31都被省略)。tmin和tmax代表當日最低溫和最高溫。





轉變成tidy data如下,右邊已經幾乎是tidy data,但右邊會更完整。



多種觀察單位存在同一張表格
這是前面提過的排行榜例子,之前的表格中,歌手和歌曲會重複多次,可以再將上面的資料表格轉換成關聯式表格。



Tidy