学习本节课后,你可以:

  1. 在R中读取大文件,几十兆?,几百兆?,几个G?内存有多大,心就有多大。

啥,为什么要读文件?文件不读入,怎么做数据处理,怎么做可视化,怎么做机器学习

一、R包之readr包

readr包的读取文件速度快效率高,相对于util包的read.csv操作,readr中的read_csv速度快将近5倍。以下我们以一个1.8G的文档做一个示例

  1. 读取一个1.8G,1300万行的数据集


R语言读取tsv文件 用r读取tsv文件_java csv linux 读取乱码

1.8G的csv文件


2. 通过read_csv读取文件代码


#readr包读取文件
#install.packages('readr')
library(readr)
begin_time <- Sys.time()
file <- readr::read_csv("C:/Users/Administrator/Desktop/链家小区数据.csv"
                        ,locale = locale(encoding = "GB18030"))
end_time <- Sys.time()
#计算消耗时间
print(end_time - begin_time)


3. 读取时间(read_csv和read.csv对比 20秒 vs 100秒)


R语言读取tsv文件 用r读取tsv文件_c++ 怎么读取rtf文件_02

read_csv读取1.8G数据用时19.84秒

R语言读取tsv文件 用r读取tsv文件_c++ 怎么读取rtf文件_03

read.csv读取1.8G数据使用时间1.66分钟

4. 编码设置

不同的文件会用不同的编码格式,在read_csv读取csv文件时,我们用locale = locale(encoding = "GB18030")来设置读取文件的编码,如果不加则可能会出现乱码


R语言读取tsv文件 用r读取tsv文件_c++读取csv文件_04

没有加上encoding,读取文件出现乱码

二、R包之readxl包

很多时候需要读取日常办公常用的excel文件,我们用readxl包中的read_excel方法可以快速读取


#readxl包读取excel文件
 install.packages('readxl')
library(readxl)
file2 <- read_excel('C:/Users/Administrator/Desktop/链家二手房房源信息采集.xlsx'
                   sheet = 1)


参数:

startRow :从这一行开始查找数据,无论startRow是多少,文件上面的空行都会被跳过

sheet : 从那一页开始读

colNames :如果为真,第一行的数据就是列的名字

rowNames :如果为真,第一类数据会被作为行的名字

detectDates :如果为真,则尝试识别日期并进行转换

skipEmptyRows 如果为真,会跳过空行,如果第一个有数据行之后有空行则返回一行NAs
If TRUE, empty rows are skipped else empty rows after the first row containing data will return a row of NAs.

skipEmptyCols 如果为真,会跳过空列
If TRUE, empty columns are skipped.

rows 如果为空则读所有的行,否则输入一个向量来读取向量对应的行。

cols 输入一个数值向量来指定读表格中的那些列,如果为空的化,读完所有的列。

check.names 逻辑变量,如果为真,则检查数据框中变量的名称,以确保它们是语法上有效的变量名

namedRegion 工作簿中的命名区域。 如果不是NULL,则 startRow,rows和cols参数将被忽略

na.strings 字符串的字符向量将会被解释称为 NA,空格将被返回为 NA 。

fillMergedCells 如果为TRUE,则合并单元格中的值将提供给合并中的所有单元格。

注意:此函数既可以读 .xls 也可以读.xlsx 类型文件