R學習筆記系列—R語言從文本和Excel文件中讀取數據

編程語言 Excel R語言 C語言 愛編程愛統計 愛編程愛統計 2017-09-03

1.4.1 從文本文件中導入數據

可以使用 read.table() 函數從帶分隔符的文本文件中導入數。調用格式為:

R學習筆記系列—R語言從文本和Excel文件中讀取數據

這個函數看上去很複雜,但其實很多參數在使用時不用明確指出來,使用默認值可以滿足絕大部分情況,因此實際使用還是比較簡單的,下面我們簡單介紹一下參數含義。

  • file: 字符型,文件名稱,要從中讀取文件的完整路徑。

  • header: 邏輯型,指定是否在首行包含變量名,默認為 FALSE。

  • sep: 字符型,分割字符,默認為"",代表空白字符,包括空格(一個或多個)、製表符、 換行符、回車

  • dec: 字符型,指定小數點字符,默認為".",一般不用修改。

  • numerals: 字符型,在數字轉換會損失精度時的處理方法,allow.loss 表示允許精度損失;warn.loss 允許精度損失,但顯示一條警告信息;no.loss 不允許精度損失,即轉換為數字,而是轉換為因子或者不轉換,保留字符串形式。

  • row.names 字符向量,為行指定名稱。

  • col.names 字符向量,為列指定名稱,若列名在第一行定義好了,可不用。

  • stringAsFactors: 邏輯型,是否將字符串自動編碼為因子,默認為 TRUE。

  • na.strings: 字符向量,定義代表缺失值的字符串,比如c("N",".")會將 "N" 和"." 兩個字符讀取為缺失值,默認為 "NA"。

  • colClasses: 字符向量為列指定類型,比如c("numeric","character")指定第一列為數值型,第二列為字符型,若將某列指定為字符串,則不會將其自動編碼為因子。

  • nrows: 數值型,讀取的最大行數,負數為不限制。

  • skip: 數值型,讀取前跳過的行數。

  • check.names: 邏輯型,是否檢查變量名在 R 中的有效性,默認為 TRUE。

  • fill: 邏輯型,是否自動填充空白值,若各變量行數不一致,是否為空白列添加空白值。

  • strip.white: 邏輯型,是否自動過濾掉字符型變量前後的空格。

  • comment.char: 字符型,註釋字符,以此字符開頭的行將被忽略。

  • blank.lines.skip 邏輯型,是否忽略空白行,默認為 TRUE。

  • allowEscapes: 邏輯型,是否處理 C 語言風格的轉意符。

  • text: 字符型,直接指定要讀取的字符串,此時 file 應該為空。

  • encoding: 字符型,輸入文本的編碼,若出現亂碼,請嘗試更改此選項。

  • fileEncoding: 字符型,文件編碼,若出現亂碼,請嘗試更改此選項。

假定我們有一個文本文件,students.txt,記錄了6個學生的性別、身高和體重情況,其內容如下:

R學習筆記系列—R語言從文本和Excel文件中讀取數據

那麼我們可以用以下方式讀取:

R學習筆記系列—R語言從文本和Excel文件中讀取數據

read.table() 是讀取按行列組織的數據的基礎方式,其它同類函數,比如 read.csv() 等其實是用特定的選項調用了 read.table() 函數。在 read.table() 函數時,應儘量注意以下幾點。

  1. 建議明確地在首行定義變量名,並加上參數 header = TRUE。

  2. 默認的分隔符為"",可以用空格、製表符、換行符等空白字符分割內容,若非空白分割,則需明確指出。

  3. 字符型變量會被自動轉換為因子型,在讀大型文件時,將 stringsAsFactors 設置為 False,能加快讀取速度。

  4. 默認情況下,read.table 用 # 作為註釋標識字符。如果碰到該字符(除了在被引用的字符串內),該行中隨後的內容將會被忽略。

  5. read.table()會盡量為每個變量選擇合適的數據類型,若你想明確指定請用colClasses,或者生成後根據需要修改。

  6. 若讀中文時出現亂碼,請嘗試改變編碼

1.4.2 從 Excel 表格中讀取

R學習筆記系列—R語言從文本和Excel文件中讀取數據

從 Excel 裡讀取數據最簡單的辦法就是將 Excel 表格存儲為以逗號分割的 csv 文件,然後用 read.csv() 函數讀取。read.csv() 函數其實就是 read.table() 的定製版,其用法與 read.table() 基本一致。

若要直接讀取 Excel 文件,則需安裝專門的包,本書推薦 readxl 包。

R學習筆記系列—R語言從文本和Excel文件中讀取數據

readxl 中有若干讀取 Excel 數據的函數,最常用的是 read.excel()。調用格式為:

R學習筆記系列—R語言從文本和Excel文件中讀取數據

path: 字符型,文件路徑sheet: 字符型或數值型。若為字符型,則指定 Sheet 名;若為數值,則指定 Sheet 的位置;若不指定,默認第一個Sheetrange: 字符型或數值型,讀取的單元格範圍,比較複雜,請查看文檔col_names: 邏輯型或字符型向量;若為邏輯型,則指定是否將第一行作為變量名;若為字符向量,則直接定義各列名col_types: 字符型向量,定義各列數據類型,比如c("numeric","character");若不指定,則自動匹配na: 字符型向量,指定讀取為缺失值的字符串 ,默認情況下,會將空單元格讀取為缺失值trim_ws: 邏輯型,是否自動過濾掉字符型變量前後的空白(空格、製表符、換行符skip: 數值型,讀取前跳過的行數,因為空白的行會自動跳過,所以這是最小的被跳過的行數n_max: 數值型,最大讀取行數guess_max: 數值型,猜測列類別時,檢測的最大行數

假如,在 d 盤有一名為 students.xls 的 Excel 文件,你可以通過如下方式讀取。

R學習筆記系列—R語言從文本和Excel文件中讀取數據

喜歡閒適安靜的生活,懂一點計算機編程,懂一點統計學和數據分析。(愛編程愛統計)

相關推薦

推薦中...