天天看點

《資料科學:R語言實作》——2.4 掃描文本檔案

本節書摘來自華章計算機《資料科學:r語言實作》一書中的第2章,第2.4節,作者 丘祐玮(david chiu),更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

在之前的教程中,我們介紹了如何使用read.table和read.csv加載資料到r程序中。然而,read.table和read.csv隻适用于列數固定,資料不多的情形。為了在資料處理過程中更加靈活,我們會介紹如何使用函數scan從檔案中讀取資料。

在本教程中,你需要完成之前的教程,并下載下傳snp500.csv到目前目錄。

執行下列步驟,掃描csv檔案中的資料。

1.首先,你可以使用函數scan讀取snp500.csv中的資料:

《資料科學:R語言實作》——2.4 掃描文本檔案

2.然後使用mode和str檢視加載的資料:

《資料科學:R語言實作》——2.4 掃描文本檔案

與read.table和read.csv相比,函數scan更加靈活,資料讀取也更加高效。這裡,我們在what參數中,以清單的形式指定字段名和每個字段的支援類型。在這個例子中,第1個字段是字元類型,其他字段都是數值類型。是以,我們可以給date列設定兩個單(或雙)引号,給其他列設定為0。然後,因為我們需要忽略列名行,并自動給字段數少于列數的任何一行添加空字段,我們可以設定skip為1,fill為true。

現在,我們可以使用内置的函數檢視資料。這裡,我們使用mode擷取對象的類型,使用str展示資料的結構。

某些情況下,資料是通過固定寬度分隔,而不是通過固定分隔符分隔的。為了指定每一列的寬度,你可以使用函數read.fwf。

1.首先,你可以使用download.file從作者的github網頁上下載下傳weather.op:

《資料科學:R語言實作》——2.4 掃描文本檔案

2.然後,使用檔案編輯器檢視資料,如圖5所示。

《資料科學:R語言實作》——2.4 掃描文本檔案

3.通過在widths中指定每列的寬度,在col.names中指定列名,設定skip為1跳過第一行,讀取資料:

《資料科學:R語言實作》——2.4 掃描文本檔案

4.最後,你可以使用函數head和names檢視資料:

《資料科學:R語言實作》——2.4 掃描文本檔案