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")

R语言 查看数据分布情况 r语言查看数据集内容_读取数据


可以看出UTF-8的效果比较好,顺利读入中文文本没有乱码。

键盘键入数据

scan函数讲解

在数据量比较小或者在设计函数功能时,经常需要从键盘键入数据,scan函数可以很好的完成这个任务。在使用scan时需要注意的是,scan函数是以空格键分割数据、回车键结束的,所以当数据提前写好时建议在数据后敲一个回车键。下面贴出代码:

R语言 查看数据分布情况 r语言查看数据集内容_数据_02


当代码中没有回车时,会导致报错。当然scan函数也可读取表格数据,但是和内置的其他函数功能一致,在这就不重复介绍了。

表格数据

.xlsx文件介绍

作为office三件套的扛把子,.xlsx文件可以说是非常常用了,用R语言怎么轻松读入呢?在这里介绍两种方式:
1、加载函数包读入

install.packages("xlsx")  # 安装包
library(xlsx) # 载入包
# 读取数据
read.xlsx()

2、转成csv用自带函数读取

当然一般我们还是选择转csv格式在进行读取,方法很简单,用excel打开选择另存为,选择逗号分割的,csv就可以了。

R语言 查看数据分布情况 r语言查看数据集内容_R语言 查看数据分布情况_03

表格数据函数参数介绍

在读取表格函数时,有以下函数供我们选择:

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(可修改数据但不推荐使用)