R語言從入門到精通:Day4

  • 2019 年 10 月 6 日
  • 筆記

上一節課我們熟悉了R語言中的各種數據類型,幫大家複習一下,這些數據類型包括了向量(vector)、矩陣(matrix)、數組(array)、數據框(data.frame)和列表(list),還提到了因子(factor)。這些數據類型在我們運用R語言解決實際問題的時候都非常有用,在上節的例子中我們是在R裏面直接生成的數據,但是實際數據分析中,如何快速靈活的讀取和處理多種格式的外部數據呢?這節課的主要內容,我們就來講講R語言中數據的讀取。

溫馨提示

1、本節內容重點內容較多,

務必緊跟紅色標記。

2、測試數據及代碼

見文末客服小姐姐二維碼。

上節教程結束後,有同學問:我每次用R語言解決實際問題的時候都要像第3節中那樣用鍵盤將每個數據輸入電腦裏面嗎?答案當然是否定的。R語言給我們配套了多種輸入數據的方法和接口,能夠快速靈活的處理多種格式的數據(如圖1)。這節課的主要內容就是R語言中數據的輸入。

圖1:R語言數據輸入的示意圖

下面來逐一學習不同的數據導入方法。

1. 使用鍵盤輸入數據

要求:了解

在上一次的學習中,大家已經接觸了很多了創建不同類型變量的方法,這裡再給大家提供幾個從鍵盤輸入數據的方法。如圖2、圖3、圖4所示:

圖2:函數read.table()的鍵盤輸入用法

圖3:函數fix()的使用(1)

圖4:函數fix()的使用(2)

第一種方法是在創建data.txt字符串之後,用函數read.table()創建數據框data.1。這種用法可以讓我們把數據嵌入R代碼中去。此處切記,read.table()函數是我們最為常用的讀取外部數據的函數,下文還會詳細解讀。

第二種方法是用函數fix()創建了一個和data.1一樣的數據框data.2,函數edit()也有同樣的效果,大家可以在幫助文檔裏面找一下函數edit()的具體用法。

這些在處理一些小數據集的時候是很有效的,但是面對大數據的問題就力不從心了,並且也不夠靈活,而下面要介紹的方法就是要解決這兩個問題。

2. 從文本文件導入數據

要求:必須掌握

在上文的第一種方法中,函數read.table()是從鍵盤輸入的字符串變量裏面創建數據框的,這種方法並不適用,實際上read.table()函數的功能要更加強大一些。函數read.table()更加常用的是從帶有分隔符的文本文件中讀入數據並創建數據框(實際上csv文件就是常見的帶分隔符的文本文件,其分隔符是逗號「」,csv文件可以通過文本編輯器或者excel軟件創建,也可以是perl、python腳本的輸出結果)。

在Rstduio中輸入read之後會自動聯想出函數read.table()、read.csv()和read.csv2(),這三個函數的用法比較接近,這裡就只介紹read.table(),另外兩個函數大家可以自己嘗試。

可能有些同學已經發現在R的幫助文檔裏面,函數read.table()的參數很多,看上去很複雜,不用擔心,實際使用中我們需要調整的參數並不多,下面列出了一些關鍵的參數用法:

表1:函數read.table()的參數及用法

以文件example.csv為例(測試數據見文末,聯繫胖雨小姐姐可得)來演示一下,文件中以逗號作分隔符,每個數據都用雙引號圍住。

圖5:example的一部分數據

文件example.csv裏面前7行是主體數據的注釋,第一列是基因名。如果直接用函數read.table()讀取,如圖6。

圖6:直接讀取的示意圖

圖7:調整參數之後的示意圖

可以看到圖6中的讀取效果並不理想,在圖7中,加上skip和row.names兩個參數之後,數據就顯得有條理了。函數read.table()還有很多其他的參數,感興趣的同學可以多嘗試一下。

3. 從xlsx文件讀入數據

要求:了解

對於平時更多使用excel軟件的同學而言,xlsx格式的表格文件比csv要更常見,所以這裡也提一下怎麼把xlsx文件導入R語言(其實在excel軟件包裏面,大家可以直接把xlsx文件另存為csv文件,就可以直接用函數read.table()、read.csv()和read.csv2()了)。

在有些R語言教程中,推薦了R包xlsx,但是這個包依賴與xlsxjars和rJava包(關於R包的內容,請參考前期文章:挖掘GEO速成SCI文章系列教程(3)-R語言基礎),以及一個正常工作的Java,安裝起來較為麻煩。

這裡我給大家推薦一個不需要這些依賴的R包:openxlsx(openxlsx包的安裝如圖8)。openxlsx包的幫助文檔里介紹了三個寫入數據和一個讀取數據的函數,其中讀取數據的函數read.xlsx()就能實現xlsx文件的讀取。這個函數的命名和用法都和read.table()非常類似(如圖9),大家不妨自己嘗試一下如何使用這個函數。

圖8:包openxlsx的安裝

圖9:函數read.xlsx()的參數

4. 常用的數據操作函數

要求:掌握

讀取數據之後,大家就可以開始做一些簡單的數據處理了。R語言中有很多常用的函數,這裡先給大家一個簡短的表格,供大家在讀取數據後做一些練習。一些更加複雜的函數在下次再集中給大家介紹。

小結

實際上數據的讀取只是R語言的冰山一角,但是也是開始一個數據分析項目的不可或缺的一步。上面只介紹了三種數據輸入的方法,也是大家在自己項目中最可能遇到的情況,R語言還可以讀取XML、網頁、數據庫(MySQL、Oracle等等)、SPSS和SAS等數據,篇幅有限,就不一一介紹了,如果有同學需要這方面的幫助,我們也可以單獨再出一期和大家交流一下。當然,大家在數據準備和輸入過程也可能會遇到很多問題,歡迎和我們一起交流討論。

文末有本節課程的測試數據和代碼哦~~

最後跟大家嘮幾句:任何事物的學習都要循序漸進,一口吃不了個胖子,希望大家能夠沉下心來,力爭每節課都能掌握,這樣等到最後課程結束的時候,再回過來看,你會突然發現,自己已經掌握了R語言的精髓。總之,希望隨着課程的推進,希望大家每天都有所收穫。

說好的,期期皆有福利乾貨,本期乾貨如下:

本期乾貨

·

!!R語言數據導入測試代碼及數據!!

原文詳情:「科研貓」公眾號