R語言中使用read.table函數從文本文件和CSV文件中讀取數據

在R中,可以使用read.table()函數方便的讀取具有多列表格形式的文件數據。文件中的數據一般情況,行對應的是樣本,列(字段)對應著相應的變量。讀取的數據將組織成數據框的結構。

read.table()函數簡介

read.table()函數的用法如下:

read.table(file, header = FALSE, sep = "", quote = ""'", dec = ".", row.names, col.names, as.is = !stringsAsFactors, colClasses = NA, nrows = -1,skip = 0, blank.lines.skip = TRUE, encoding = "unknown", text, skipNul = FALSE)

主要參數的含義如下:

  • file

要讀取的文件名稱,矩形表格數據的每行是文件中的一行,與scan()函數相同,如果file參數中給定的文件名不是絕對路徑,則文件名是相對於當前R的工作目錄給出的。

  • header

邏輯值。用於指出文件的第一行是否為數據變量的名字。缺省情況下,由文件的格式來確定此值。如果header設置為TRUE,則要求第一行要比數據列的數量少一列。

  • sep

數據的分隔符。默認情況下,sep=""。此參數用於指定數據文件中每行中數據之間使用的分隔符。默認情況下,read.table()函數以空白作為數據的分隔符,即默認情況下,read.table()函數可以將1個或多個空格、tab製表符、換行符或回車符作為分隔符。

  • row.names

保存行名的向量。可以使用此參數以向量的形式給出每行的實際行名。或者要讀取的表中包含行名稱的列序號或列名字符串。在數據文件中有行頭且首行的字段名比數據列少一個的情況下,數據文件中第1列將被視為行名稱。除此情況外,在沒有給定row.names參數時,讀取的行名將會自動編號。可以使用row.names = NULL強制對行進行編號。

  • col.names

指定列名的向量。缺省情況下是又"V"加上列序構成,即V1,V2,V3......

  • nrows

整型數。用於指定從文件中讀取的最大行數。負數或其它無效值將會被忽略。

  • skip

整型數。讀取數據時忽略的行數。

  • blank.lines.skip

邏輯值,此參數值設置為TRUE時,數據文件中的空白行將被忽略。默認值為TRUE。

  • encoding

假定輸入字符串的編碼方式。

  • skipNul

邏輯值。是否忽略空值。默認為FALSE。

使用read.table()函數從文本文件中讀取數據

read.table()函數對於文件的擴展名沒有要求。只要數據組織是按照行和列的形式進行,且每個字段的數據以某種形式(如空白、逗號等)進行分隔即可。下面以中國統計年鑑2016版(進口需求(y)與國內生產總值(x))獲取的中國1989年到2015年的進口額及GDP的數據保存在名為gi.txt的文件中。文件中的數據組織格式如下(單位:億元):

R語言中使用read.table函數從文本文件和CSV文件中讀取數據

文本文件中的內容

(1)read.table("gi.txt") #直接給出文件名

讀取結果形式如下圖所示:

R語言中使用read.table函數從文本文件和CSV文件中讀取數據

只給出文件路徑

從結果可以看出,在沒有給定分隔符時,默認以空白分隔,並且可以看出原文件中的標題行也作為數據處理了。在沒有給定字段(變量)名稱時,read.table()函數依次給每列的變量名為v1, v2, ...。讀取結果的第1列為行標題(序號)。

(2)read.table("gi.txt", header=TRUE) #指定header指明文件中包含變量名

R語言中使用read.table函數從文本文件和CSV文件中讀取數據

指定header參數

(3)read.table("gi.txt", header=TRUE, col.names=c("year", "x", "y")) #指定col.names

R語言中使用read.table函數從文本文件和CSV文件中讀取數據

指令col.names參數

使用read.table()函數從CSV文件中獲取數據

CSV文件中的數據格式如下:

R語言中使用read.table函數從文本文件和CSV文件中讀取數據

CSV文件的數據格式

(4)read.table("0504多元迴歸開店問題.csv")

R語言中使用read.table函數從文本文件和CSV文件中讀取數據

未指定其它參數時

可以看出在以逗號作為分隔符的文件中,如果不指定數據的分隔符,read.table()函數會將所有的數據理解為一個字段(變量)下的數據。

(5)read.table("0504多元迴歸開店問題.csv", header=TRUE, sep=",")

R語言中使用read.table函數從文本文件和CSV文件中讀取數據

指定header和sep參數

(6)read.table("0504多元迴歸開店問題.csv", header=TRUE, sep=",", nrows=15)

R語言中使用read.table函數從文本文件和CSV文件中讀取數據

指定nrows參數讀取前nrows行

(7)read.table("0504多元迴歸開店問題.csv", header=TRUE, sep=",", col.names=c("y", "x1", "x2"), skip=5)

R語言中使用read.table函數從文本文件和CSV文件中讀取數據

指定skip參數

指定skip參數時應該設置col.names參數,否則第一行數據將作為列名處理。

歡迎關注本號。本號將持續更新有關R語言方面的文章。內容由淺入深,從R語言的基本語法到具體的分析應用。將個人在實際工作中的知識分享給大家。


分享到:


相關文章: