学习本节课后,你可以:
- 在R中读取大文件,几十兆?,几百兆?,几个G?内存有多大,心就有多大。
啥,为什么要读文件?文件不读入,怎么做数据处理,怎么做可视化,怎么做机器学习
一、R包之readr包
readr包的读取文件速度快效率高,相对于util包的read.csv操作,readr中的read_csv速度快将近5倍。以下我们以一个1.8G的文档做一个示例
- 读取一个1.8G,1300万行的数据集
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秒)
read_csv读取1.8G数据用时19.84秒
read.csv读取1.8G数据使用时间1.66分钟
4. 编码设置
不同的文件会用不同的编码格式,在read_csv读取csv文件时,我们用locale = locale(encoding = "GB18030")来设置读取文件的编码,如果不加则可能会出现乱码
没有加上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 类型文件