在進行數據分析的時候,資料整理的格式十分重要,基本原則有三
每一個變數(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個)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwmEr9yAcgScteMm7UbHRs7vgVdIe66Nyii1qp5NaJ7xxED8y527H041Spb9GIe6fHuq7cTaiam3-4bVswPJY4skGlFsw23gmU8TkX9UcaRieF0q7Rws4x7lFY74nGOd7JidtX/s640/02.png)
如果以tidy data的目標來轉換,會成為這樣的表格,每一欄都是一個變數,每一列都是一筆觀察值。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFMbS6qPXRlskA_tAP5SNgCBcba2hPlmXgfH9IV055itnXXJe7P9XmMcEpSW2TYflgNWkkUTpdalJOSe5mKbZDJ1lSBD1yp9F11yoGsgH4-bMGM39jMUFCMSrdfCttIJiCvLUX/s640/03.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwmEr9yAcgScteMm7UbHRs7vgVdIe66Nyii1qp5NaJ7xxED8y527H041Spb9GIe6fHuq7cTaiam3-4bVswPJY4skGlFsw23gmU8TkX9UcaRieF0q7Rws4x7lFY74nGOd7JidtX/s640/02.png)
如果以tidy data的目標來轉換,會成為這樣的表格,每一欄都是一個變數,每一列都是一筆觀察值。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFMbS6qPXRlskA_tAP5SNgCBcba2hPlmXgfH9IV055itnXXJe7P9XmMcEpSW2TYflgNWkkUTpdalJOSe5mKbZDJ1lSBD1yp9F11yoGsgH4-bMGM39jMUFCMSrdfCttIJiCvLUX/s640/03.png)
混亂的資料集( 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.
欄標題是數值,而不是變數名稱
以下這個例子就是欄標題不是用變數,而是用了數值。這是一個宗教對應收入的表格,左邊一欄是宗教,右邊六欄都是收入的「數值」。這個資料夾其實有三種變數,宗教、收入、數量
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaNzxRPL2jBWYpfTGqw3smqXhm-_T6i4o9uFzqz7vepn2-eRXBFr_oza2tN_s5Ndx7_5lzoZRT9_1OL3oRDZfQg2wsUmkCD0vG2Pk_tgPQMUZzNkFxVMGxxbSRRmvm2xkestOc/s640/04.png)
轉成tidy data應該變成這樣
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGuntjxwCRToN8_FHlx3_OlMGIbXVHShu3aNNRU1TCTRzQbMOcRZxxve736PbqCyx0JPnA_IErmBS_4ktu4PcLJHfDyFub79cSu7Ptr086Mg3DPAJAwm9XHdJQGVMqCyVb1gOn/s640/06.png)
欄標題非變數的另外一個例子。這是音樂排行榜的例子,右邊三欄分別是第一週、第二週、第三週的排名,實際上右邊會延長很多到第75週
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8LZH4CTMAIszya9LOlcMYh4HJ3HRqUpK4-2w39LXwN7Th3Y3J1OYKCV21g9mnTT6gFLVRdtZRlyZzpHfxp2lYKyP2S3P9D5UIe37XpdGMtnKJEUjNNNR3PcTsviWG58npOchh/s640/07.png)
轉變成tidy data之後是這樣,把上表的週和排名變為兩欄
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUsGFA0jDWTMf7UrPeYQjvV7yL7L5zj70Rw_-Vri37cAWIFpH9jEDqTvXaeNYQA7yh3feZoVC0zDefalJMapegozxytIEa1VC6wF3U1wAdn0W4ZoOKjc1sQDOQdaXprwe6pZcn/s640/08.png)
以下這個例子就是欄標題不是用變數,而是用了數值。這是一個宗教對應收入的表格,左邊一欄是宗教,右邊六欄都是收入的「數值」。這個資料夾其實有三種變數,宗教、收入、數量
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaNzxRPL2jBWYpfTGqw3smqXhm-_T6i4o9uFzqz7vepn2-eRXBFr_oza2tN_s5Ndx7_5lzoZRT9_1OL3oRDZfQg2wsUmkCD0vG2Pk_tgPQMUZzNkFxVMGxxbSRRmvm2xkestOc/s640/04.png)
轉成tidy data應該變成這樣
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGuntjxwCRToN8_FHlx3_OlMGIbXVHShu3aNNRU1TCTRzQbMOcRZxxve736PbqCyx0JPnA_IErmBS_4ktu4PcLJHfDyFub79cSu7Ptr086Mg3DPAJAwm9XHdJQGVMqCyVb1gOn/s640/06.png)
欄標題非變數的另外一個例子。這是音樂排行榜的例子,右邊三欄分別是第一週、第二週、第三週的排名,實際上右邊會延長很多到第75週
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8LZH4CTMAIszya9LOlcMYh4HJ3HRqUpK4-2w39LXwN7Th3Y3J1OYKCV21g9mnTT6gFLVRdtZRlyZzpHfxp2lYKyP2S3P9D5UIe37XpdGMtnKJEUjNNNR3PcTsviWG58npOchh/s640/07.png)
轉變成tidy data之後是這樣,把上表的週和排名變為兩欄
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUsGFA0jDWTMf7UrPeYQjvV7yL7L5zj70Rw_-Vri37cAWIFpH9jEDqTvXaeNYQA7yh3feZoVC0zDefalJMapegozxytIEa1VC6wF3U1wAdn0W4ZoOKjc1sQDOQdaXprwe6pZcn/s640/08.png)
多個變數在同一欄
這個例子中的欄標題,m014,代表了male,0歲到14歲。所以同一欄裡頭就有兩個不同的變數,最右邊的f014則是female,0-14歲。仔細觀察這個表,其實變數有五個,country、year、sex、age、cases
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdyUNRV0419V6omd0dX07FacSsOX2BUSvo49P6tLYkUMjeJOAb6TioxEQlbUvTCuU-GpGwODDNVy6ZefydT_LSRlYJy6xYAyVdNARPs9qtpjfosKJkzGwt7RDG4nfrgqF31YvZ/s640/09.png)
轉換成tidy data的過程,先做成左邊之後,再把性別一變數獨立出來一欄,成為五欄的tidy data(下右圖)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje5n3DyXezX04RbcncMYs7IZbdIaQLoSbFHxJjia2vBJBdkXW-CpMyvEjqA92zqSbjRw8KVVMZDtEXYolcaXhT6akawki5G9rQveoMNoSqNvvVj1tvJgI8jXOJrlC5HT-tvGv_/s640/10.png)
變數同時在欄和列
這是某個天氣站的氣溫觀察紀錄,d1代表第一天(右邊其實還有d9-d31都被省略)。tmin和tmax代表當日最低溫和最高溫。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVAnqmkn1ve5e9l7MqzQZ1JDfG3in57ev7R7zXvAmAoxk2GrRczMJVyRHe-mjUvh7XGsUHp1owvK92zhpc7uVYQ7RIW_8glUna1jrbAMM75gU9Gtc0bI86Qf_hhwLOPLtHV0pQ/s640/11.png)
轉變成tidy data如下,右邊已經幾乎是tidy data,但右邊會更完整。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK07IYpyWq_Sg0GJFzEj-o62QVlffc_DrGtgyqNZ8h4_mfbcNqJft8Z5c_GMuX2-M3UEsr-tQDivl_0fVhgKIfOaOqXurzPuDWT6uqBC_lTu_cLMB1qfPFOuPsnHeG1Ccu78Kr/s640/12.png)
多種觀察單位存在同一張表格
這個例子中的欄標題,m014,代表了male,0歲到14歲。所以同一欄裡頭就有兩個不同的變數,最右邊的f014則是female,0-14歲。仔細觀察這個表,其實變數有五個,country、year、sex、age、cases
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdyUNRV0419V6omd0dX07FacSsOX2BUSvo49P6tLYkUMjeJOAb6TioxEQlbUvTCuU-GpGwODDNVy6ZefydT_LSRlYJy6xYAyVdNARPs9qtpjfosKJkzGwt7RDG4nfrgqF31YvZ/s640/09.png)
轉換成tidy data的過程,先做成左邊之後,再把性別一變數獨立出來一欄,成為五欄的tidy data(下右圖)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje5n3DyXezX04RbcncMYs7IZbdIaQLoSbFHxJjia2vBJBdkXW-CpMyvEjqA92zqSbjRw8KVVMZDtEXYolcaXhT6akawki5G9rQveoMNoSqNvvVj1tvJgI8jXOJrlC5HT-tvGv_/s640/10.png)
變數同時在欄和列
這是某個天氣站的氣溫觀察紀錄,d1代表第一天(右邊其實還有d9-d31都被省略)。tmin和tmax代表當日最低溫和最高溫。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVAnqmkn1ve5e9l7MqzQZ1JDfG3in57ev7R7zXvAmAoxk2GrRczMJVyRHe-mjUvh7XGsUHp1owvK92zhpc7uVYQ7RIW_8glUna1jrbAMM75gU9Gtc0bI86Qf_hhwLOPLtHV0pQ/s640/11.png)
轉變成tidy data如下,右邊已經幾乎是tidy data,但右邊會更完整。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK07IYpyWq_Sg0GJFzEj-o62QVlffc_DrGtgyqNZ8h4_mfbcNqJft8Z5c_GMuX2-M3UEsr-tQDivl_0fVhgKIfOaOqXurzPuDWT6uqBC_lTu_cLMB1qfPFOuPsnHeG1Ccu78Kr/s640/12.png)
多種觀察單位存在同一張表格
這是前面提過的排行榜例子,之前的表格中,歌手和歌曲會重複多次,可以再將上面的資料表格轉換成關聯式表格。
Tidy