自創(chuàng)立以來,R已經成為統(tǒng)計計算和數據分析的一個優(yōu)秀軟件。該軟件的唾手可得以及范圍廣泛的程序包再加上隨時提供支持的R社區(qū),使R成為幾乎任何一種和統(tǒng)計相關的計算任務的一個極好選擇。然而,很多用戶,特別是那些有其它程序語言經驗的用戶,并沒有完全利用R的能力。由于R的特性,在其它程序語言中有用的方法在R中可能效率并不高。菲爾·斯佩克特的《R語言數據操作》展示了一系列將數據讀入R并進行高效處理的方法。
除了內置的函數,還包括了可以從CRAN(綜合R檔案網絡)下載的大量現成的程序包。展示的所有方法都利用了R的核心特性:對于通常的數據管理任務所提供的向量化運算,高效的下標使用,R函數的正確使用。
最有經驗的R用戶發(fā)現,特別是在處理大型數據集時。將R和其它程序結合使用可能會有幫助,尤其是數據庫程序。因此,對于在R中使用數據庫,以及從電子表格和其它程序創(chuàng)建的數據集中提取數據的方法,這些都有詳細的論述。R中雖然有時會忽略字符操作,在這里卻作了詳細的論述。使得那些傳統(tǒng)地使用腳本語言解決的問題完全可以用R解決。對于那些有其它程序語言經驗的用戶提供了有效使用程序結構——例如循環(huán)——的指南。
由于許多統(tǒng)計建模和圖形函數需要數據框形式的數據,全書自始至終都提供了將普通函數的輸出結果轉化為數據框的技術。
通過使用各種不同的例子(其數據來源于R或者是輕松可得的模擬數據集),《R語言數據操作》可推薦給任何想從運行簡單的例子提高到可以對實際的真實數據提供操作解決方案的R使用者。
菲爾·斯佩克特的《R語言數據操作》是近年來關于R軟件應用的一部不可多得的好書,本書內容具有綜合性、緊湊性和簡潔性,是R語言數據處理技術的綜合指南,對于統(tǒng)計應用和理論研究都很有幫助。本書囊括了從各種不同格式的數據文件讀取數據的技術以及采用適當的R內部數據格式保存數據的技術,對于諸如日期和時間型數據的處理、下標工具的應用、字符型數據的處理以及數據框的應用技術都通過豐富的實際或模擬數據實例作了精彩講解。
譯者序前言第1章 R中的數據 1.1 模式和類 1.2 R的數據存儲 1.3 模式與類的檢測 1.4 R對象的結構 1.5 對象的轉換 1.6 缺失值 1.7 缺失值的處理第2章 讀取和寫入數據 2.1 讀取向量和矩陣 2.2 數據框:read.table 2.3 逗號和制表符分隔的輸入文件 2.4 固定寬度輸入文件 2.5 從R對象中提取數據 2.6 連接 2.7 讀取大型數據文件 2.8 生成數據 2.8.1 序列 2.8.2 隨機數 2.9 排列 2.9.1 隨機排列 2.9.2 枚舉所有排列 2.10 序列的處理 2.11 電子表格 2.11.1 基于Windows的RODBC包 2.11.2 gdata程序包(所有平臺) 2.12 保存和加載R數據對象 2.13 處理二進制文件 2.14 將R對象寫入ASCII格式的文件 2.14.1 write函數 2.14.2 write.table函數 2.15 從其它程序中讀取數據第3章 R與數據庫 3.1 SQL簡介 3.1.1 導航命令 3.1.2 SQL基礎 3.1.3 綜合匯總 3.1.4 兩個數據庫的合并 3.1.5 子查詢 3.1.6 修改數據庫記錄 3.2 ODBC 3.3 使用RODBC包 3.4 DBI包 3.5 訪問MySQL數據庫 3.6 執(zhí)行查詢 3.7 規(guī)范化的表 3.8 將數據讀入MySQL 3.9 更復雜的匯總第4章 日期 4.1 as.Date 4.2 chron包 4.3 POSIX類 4.4 日期的處理 4.5 時間間隔 4.6 時間序列第5章 因子 5.1 因子的使用 5.2 數值型因子 5.3 因子的操作 5.4 根據連續(xù)變量創(chuàng)建因子 5.5 基于日期和時間的因子 5.6 交互作用第6章 下標 6.1 下標的基礎知識 6.2 數值型下標 6.3 字符型下標 6.4 邏輯型下標 6.5 矩陣和數組的下標 6.6 矩陣的特殊函數 6.7 列表 6.8 數據框下標第7章 字符操作 7.1 字符數據的基礎知識 7.2 顯示和連接字符串 7.3 處理分散的字符值 7.4 R中的正則表達式 7.5 正則表達式的基礎知識 7.6 拆分字符值 7.7 在R中使用正則表達式 7.8 替換和標記第8章 數據匯總 8.1 table函數 8.2 匯總路線圖 8.3 將函數映射到向量或列表 8.4 將函數映射到矩陣或數組 8.5 基于組的函數映射 8.6 reshape包 8.7 R中的循環(huán)第9章 重塑數據 9.1 修改數據框中的變量 9.2 變量的重新編碼 9.3 recode函數 9.4 重塑數據框 9.5 reshape包 9.6 合并數據框 9.7 在merge的環(huán)境下索引
第1章R中的數據
1 1.1模式和類
R中的每一個對象包含多個屬性以描述該對象中信息的性質。R數據中最重要的兩個屬性是模式和類。當管理數據時,重要的一點是了解R支持的不同類型的數據的差異,當數據出現問題時,問題往往在于對于特定的運算這些數據不是正確的模式或類。
mode函數列示R中任何對象的模式,class函數列示對象的類。當進行數據操作時,最常見的單個對象模式是數字、字符和邏輯。然而,由于R中的數據通常圍繞一個數據集(例如,一個矩陣或數組)旋轉,往往會遇到其他模式。在確定如何在R中存儲數據時,其中一個重要的考慮就是所研究數據的模式。有的對象(如矩陣或其他一些陣列)要求其中的所有數據屬于相同的模式,有的(像列表和數據框)允許單一的對象中存在多種模式的數據。
除了mode和class函數,typeof函數有時可以提供關于對象類型的額外信息,雖然其用處一般地說來不像mode和class提供的信息那樣大。
當規(guī)劃數據怎樣讀入R時另一個考慮是類型數據。R提供因子類來存儲這些類型的數據,而在統(tǒng)計建模和制圖函數中對因子自動進行特殊處理。因為R只需要將每個水平存儲一次,所以作為因子存儲的值比普通存儲值需要較少的存儲空間。如果您檢查一個因子對象的模式,即使它可能顯示為字符數據,你會發(fā)現,它始終是數值型的,因此當對因子進行操作時,應該特別注意。class函數或者在1.3節(jié)描述的其它謂詞函數之一可用于識別因子,只要這些因子存儲在R中。關于因子的更多信息可在第5章找到。
2 另一個重要的數據類型是日期和時間。雖然這類信息可以作為一個簡單的字符形式存儲,但是這種形式很難操作。R提供了一些機制來存儲日期,包括內置的Date,POSIXlt和POSIXct類,以及R使用者貢獻的chron程序包。其間的差別及日期和時間的操作信息在第4章有描述。
最后,最常遇到的數據模式是列表。列表時R中最靈活的數據存儲方式,因為它可以適應不同模式和長度的對象。R中的許多函數用列表的形式來保存結果,而且列表提供了累積信息增量的一種很有吸引力的方式。當你要列表的各個組成部分的模式時,可以使用sapply函數(第8.3節(jié)詳細討論),如下例所示:
> mylist = list(a=c(1,2,3),b=c("cat","dog","duck"),
+ d=factor("a","b","a"))
> sapply(mylist,mode)
a b d
"numeric" "character" "numeric"
> sapply(mylist,class)
a b d
"numeric" "character" "factor"