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语言的基本语法到具体的分析应用。将个人在实际工作中的知识分享给大家。


分享到:


相關文章: