R语言read.table函数
read.table函数可以读取外部数据至一个数据框对象中。不过,该函数对于其外部文件的格式往往会有一些特殊的要求。
·第一行数据要可以作为该数据框各个列的名称。
·随后的其他条目是各个列的值,并且每行采用相同的分隔符进行分隔。
read.table函数的基本形式为:
read.table(file, header = FALSE, sep = "" ,encoding = "unknown", …)
例如,以下是一段网站日志文件。
数据文件read.table.data.txt ------------------------------------------------------------------------------- ip time file http_code size 141.243.1.172 [29:23:53:25] "GET /Software.html HTTP/1.0" 200 1497 query2.lycos.cs.cmu.edu [29:23:53:36] "GET /Consumer.html HTTP/1.0" 200 1325 tanuki.twics.com [29:23:53:53] "GET /News.html HTTP/1.0" 200 1014 wpbfl2-45.gate.net [29:23:54:15] "GET / HTTP/1.0" 200 4889 wpbfl2-45.gate.net [29:23:54:16] "GET /icons/circle_logo_small.gif HTTP/1.0" 200 2624 --------< 中间数据省略展示>-------- wpbfl2-45.gate.net [29:23:54:19] "GET /icons/book.gif HTTP/1.0" 200 156 wpbfl2-45.gate.net [29:23:54:19] "GET /logos/us-flag.gif HTTP/1.0" 200 2788 tanuki.twics.com [29:23:54:19] "GET /docs/OSWRCRA/general/hotline HTTP/1.0" 302 0
观察上面的数据可以发现,文件内包括了若干行,它对应读取后数据框的行数据。同时可发现该文件中每行均有4个空格,这就是列的分隔符。可通过read.table函数读取上面的文件,代码如下:
root="C:/Users/liming/Desktop/ 写书/chap2/ 读取/" file=paste(root,"read.table.data.txt",sep="") read.data<-read.table(file,header=TRUE,as.is=c(2,5))
其中,root设置了文件的工作目录,这样在读取多个数据文件时方便修改路径。在read.table函数中,header被设置为TRUE,依据空格分隔符从第一行中提取出每列的名称依次是"ip""time""file""http_code""size"。as.is设置为向量c(2,5),表示要求在读取时不要把第2和第5列转化为因子。