Tidy data----從零開始學會大數據分析課程第4課-課後作業1-part2
Hadley Wickham是Rstudio的首席科學家,同時是University of Auckland, Stanford University, 以及Rice University的統計學教授。R語言中常用的ggplot2、dplyr、tidyr、stringr以及readr、readxl包等,都是由他編寫的,題圖就是他的一幅畫像。本文摘譯自Hadley Wickham發表在《Journal of Statistical Software》雜誌上的《Tidy Data》,以下為正文第3節:
Tidy Data
Hadley Wickham
3 整理混亂的數據集
現實中的數據集,通常完全不符合tidy data中的任意一條。當然,有時候某一個數據集比較整潔,可以拿來就分析,但這只是特例。這一節介紹混亂數據集中最常見的5個問題以及相應的解決辦法。
- ?列頭是數值,而不是變數名
- 多個變數儲存在同一列中
- 在行和列中都有變數
- 同一個表格中儲存了多種類型的觀察單位
- 一種觀察單位儲存在多個表格中
?
以上以及的以及其他的混亂數據集中的問題,都可以通過幾個簡單的工具進行整理,這些工具包括:melting,string splitting,casting。以下會通過實例來解釋上面提到的5個問題。所有的數據和R程序,都可以在這裡下載:hadley/tidy-data。
3.1 列頭是數值,而不是變數名的情況
一種常見的混亂數據集是我們在彙報或者是報告中常用的表格類數據,這種數據中數值混亂分布在行和列中,而且列名是數值而不是變數名。表4是一個典型的例子。
現在回到表4,表4也有一個colvar,即宗教信仰。其餘數據經轉換後,原本的收入分類變為單獨一列,頻率變為單獨一列(表6)。這個形式的數據更整齊,因為一方面每一列代表一個變數,每一行代表一個觀察。而且,每一個人口統計學單位對應一個宗教信仰和收入的組合。
要整理這個表格,首先melt,生成含有id,date,element以及value四個變數的表格(表12a),同時去掉了缺失的數據。還需要進行一步操作,以便將tmin和tmax分開,這部操作就是cast,cast有點像melt的反向操作。將element這一列重新轉換為兩個單獨的列。這樣得到的就是tidy data了(表12b)
數據集常常涉及多個水平,多中不同類型觀察單位上得到的數值。在數據整理中,每一個觀察類型應該單獨放到一張表中。這與數據集標準化的概念相類似。如果不進行標準化,數據間就會產生矛盾。
3.5 一種觀察單位儲存在多個表格中
一個觀察單位的數據分散在多個表格或文件中也很常見。通常這些表格是根據其他變數跟分割開的,如年,人員或者地點。只要格式一致,這一問題很好解決:
1. 把各個文件讀入到一個表格列表中 2. 對於每一個表格,增加一列,記錄下原來的文件名稱(因為文件名有時也包含重要的變數信息).3. 將所有表格整合成一個表格。該文章的內容就翻譯到此,後續會繼續更新R語言及大數據的學習筆記。
推薦閱讀:
※MySQL |OR運算符
※shiny儀錶盤應用——2016年美國大選數據可視化案例
※數值型與字元型轉換總結|R語言
※Learn R | 機器學習中的人工神經網路(七)