R语言数据读取
- 介绍
- 引言
- 结构安排
- 数据读取函数
- 文本数据
- readLines函数
- 键盘键入数据
- scan函数讲解
- 表格数据
- .xlsx文件介绍
- 表格数据函数参数介绍
- 快速读入参数介绍
- 竞赛数据练习
- 2020美赛C题
- 2019华为杯E题
- 数据查看函数表
介绍
引言
毕业季来临,很多小伙伴都在积极准备论文。无论是数据分析、实证分析还是数值模拟,都离不开一个趁手的软件。R语言作为一款集开源、免费、优秀的可视化等优点于一身的软件自然是很多人的一个选择。上手R软件第一件事无疑就是数据读取了,em…问题来了,我的数据量很大读写很慢怎么办?不知道某种格式的数据用什么函数?刚刚入门R读数据时一直各种报错?遇到新的数据格式不会读取?这篇文章依次为小伙伴们解答,并会随文章附上代码。
结构安排
R语言作为一个专业的数据分析软件,交互的对象肯定是非常丰富的,快速读取数据的包也是有很多。但是有一定的学习成本。本文针对一般的数据集合,像.txt、.csv 、.xlsx以及文本数据介绍常用的函数readLine、scan、read.table、read.csv,在介绍其他常见数据库的读入方式以及参数优化。其他数据库方面由于篇幅有限本文只介绍2020美赛的数据集格式.tsv,2019华为杯的数据格式.nc两种。最后介绍常用的数据查看函数。
数据读取函数
文本数据
readLines函数
读文本数据用到的函数是readLines,这个函数可以从键盘之间直接键入,也可以直接从.txt文件里逐行读入(推荐)。注意在读入中文时需要调整encoding参数设置文件编码,常见的中文编码有GBK和UTF-8。
下面展示代码效果:
// A code block
readLines("./数据/文本数据.txt", encoding = "GBK")
readLines("./数据/文本数据.txt")
readLines("./数据/文本数据.txt", encoding = "UTF-8")
可以看出UTF-8的效果比较好,顺利读入中文文本没有乱码。
键盘键入数据
scan函数讲解
在数据量比较小或者在设计函数功能时,经常需要从键盘键入数据,scan函数可以很好的完成这个任务。在使用scan时需要注意的是,scan函数是以空格键分割数据、回车键结束的,所以当数据提前写好时建议在数据后敲一个回车键。下面贴出代码:
当代码中没有回车时,会导致报错。当然scan函数也可读取表格数据,但是和内置的其他函数功能一致,在这就不重复介绍了。
表格数据
.xlsx文件介绍
作为office三件套的扛把子,.xlsx文件可以说是非常常用了,用R语言怎么轻松读入呢?在这里介绍两种方式:
1、加载函数包读入
install.packages("xlsx") # 安装包
library(xlsx) # 载入包
# 读取数据
read.xlsx()
2、转成csv用自带函数读取
当然一般我们还是选择转csv格式在进行读取,方法很简单,用excel打开选择另存为,选择逗号分割的,csv就可以了。
表格数据函数参数介绍
在读取表格函数时,有以下函数供我们选择:
read.table()
read.csv()
read.csv2()
read.delim()
read.delim2()
在上述函中基本参数一致,只是参数默认不一致,我们下面展示read.table函数的参数设置。
(file, header = FALSE, sep = "", quote = "\"'",
dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
row.names, col.names, as.is = !stringsAsFactors,
na.strings = "NA", colClasses = NA, nrows = -1,
skip = 0, check.names = TRUE, fill = !blank.lines.skip,
strip.white = FALSE, blank.lines.skip = TRUE,
comment.char = "#",
allowEscapes = FALSE, flush = FALSE,
stringsAsFactors = default.stringsAsFactors(),
fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
file参数是设置函数的文件名字、路径。
header参数是是否把第一行读为数据名称。‘
sep参数是设置数据之间的参数分割,这个参数是值得注意的,如果设置错误,运气好了的不到想要的效果,运气不好就会报错。常见的分割符有逗号(像txt、csv)、空格分割(txt)、制表符(txt、excel)。小伙伴谨慎设置。
row.names, col.names可以自定义设置数据的行名列名。
encoding设置读取编码,读中文的小伙伴注意这个参数。
里面参数还有很多,大家可以在用到是去帮助文档查看。
快速读入参数介绍
在数据量比较大时,读取数据往往会变得比较慢,R语言里自然是带了许多的函数包,但是具有很大的学习成本,我们可以通过设置参数来提升读取速度。以read.table函数为例子说明。
nrow # 读入的行数
skip # 跳过多少行
colClasses # 列属性
上述三个参数是read.table函数的内置参数,当数据量比较大时,我们可灵活设置这三个参数来实现对函数的读取加速。
1、精准读取
nrow 参数是设置我们具体读多少行。skip参数是跳过多少行继续开始读。这两个参数可以帮我们快速定位数据,达到精准读取的目的。
2、R语言在读数据前,会遍历每一列数来为数据分配数据类型和空间,当数据比较大时,这无疑会使得读取速度变慢,我们可以设置colClasses参数,提前设置好每一列的数据类型,提升速度。
竞赛数据练习
最后贴出两个赛题的数据集的读取数据代码。
2020美赛C题
install.packages("readr")
library(readr) # Load read packet
hair_dryer <- read_tsv("hair_dryer.tsv")
hair_dryer = as.data.frame(hair_dryer)
hair_dryer[,15] = as.POSIXct(hair_dryer[, 15], format = "%m/%d/%Y")
2019华为杯E题
install.packages("ncdf4")
Data = nc_open("数据/data.nc")
class(Data)
edit(Data)
数据查看函数表
下面是常用的一些查看R工作空数据状态的函数。(排列顺序是默认我使用的频率)
函数 | 含义 |
edit | 以excel的形式查看数据集(不能修改) |
head | 查看数据前n行,默认6行 |
tail | 查看数据后n行,默认6行 |
str | 查看每一列数据的属性 |
class | 查看数据类型 |
table | 分类统计 |
dim | 查看数据的规模 |
dim()[1] | 查看数据的行数 |
dim()[2] | 查看数据的列数 |
fix | 效果同edit(可修改数据但不推荐使用) |