1.5 数据存取与抽样
前面介绍了各类R数据的创建方法,而在实际工作中,要分析或绘图的数据是已有数据,因此在分析前,只需要将这类数据读入R即可。R可以读取多种类型的数据,也可以读取数据库中的数据,还可以在网上爬取数据。
1.5.1 数据存取
图表绘制通常使用外部保存的数据文件,R可以读取不同格式(包括CSV、TXT,以及Excel、SQL、HTML等数据文件)的外部数据。
1.读入R格式的数据
R语言系统除自带数据集外,本身还提供*.RData和*.rds两种数据存储格式。通过load()函数和readRDS()函数可以分别实现*RData格式和*rds格式数据的读取。
(1)RData格式文件属于非标准化存储,既可以存储数据,又可以存储当前工作空间中的所有变量。
(2)RDS格式文件属于标准化存储,仅用于存储单个R对象,且存储时可以创建标准化档案。
当数据本身为R格式,或已将其他格式数据保存为R格式,可以直接使用load()函数将指定路径下的数据读入(加载)R中。
2.读取CSV/TXT格式的数据
CSV或TXT格式的数据是学习或工作中常见的文本型数据。其中,CSV格式数据是一种通用的数据格式,其他很多类型的数据均可转换为CSV格式。使用read.table()与read.csv()函数可以很容易将CSV、TXT格式数据读入R中,这里只介绍read.csv()。
部分参数的含义如表1-3所示。
表1-3 参数含义
【例1-18】文件读取示例。
输入代码如下:
3.读取Excel格式数据
使用xlsx包中的read.xlsx()函数和read.xlsx2()函数导入.xlsx格式的数据文件。在实际工作中建议使用CSV格式导入数据文件。
TableA <- read.xlsx("D:/Rdata/Data.xlsx",sheetIndex=1)
也可以使用write.xlsx()函将数据文件导出为XLSX格式:
write.xlsx(TableA," D:/Rdata/Data.xlsx",sheetName="Sheet Name")
注意在使用R ggplot2绘图时,通常使用一维数据列表的数据框。当导入的数据表是二维数据列表时,需要使用reshape2包的melt()函数或者tidyr包的gather()函数将二维数据列表的数据框转换成一维数据列表。
4.保存数据
当在R中录入新数据,或者想要对读入的数据以指定格式保存在指定的路径中时,可以使用write.table()函数。当需要以CSV格式保存在指定的路径中时,建议使用write.csv()函数。
部分参数的含义如表1-4所示。
表1-4 参数含义
【例1-19】文件保存示例。
输入代码如下:
1.5.2 数据抽样
1.生成随机数
工作中,有时需要生成各类分布的随机数做模拟分析,R中产生随机数时,只需在相应分布函数前加字母“r”即可,如生成均值为0、标准差为1的正态分布随机数,代码如下:
如果需要每次运行都产生相同的一组随机数,可在生成随机数之前使用set.seed()函数设定随机数种子。例如:
set.seed(9)
使用相同的随机数种子,每次运行都会产生一组相同的随机数。
【例1-20】产生随机数示例。
输入代码如下:
2.随机抽样
实验获取的数据会比较庞大,实际应用需要从中抽取一个简单随机样本以作为分析样本。R的sample()函数可以实现随机抽样,其语法格式为:
sample(x,size,replace=FALSE,prob=NULL)
其中,x是由一个或多个元素组成的向量,size是要抽取的元素个数(样本量),replace确定是否采取放回抽样,设置为TRUE表示有放回抽样,默认为FALSE(不放回抽样),prob是要抽取元素的概率权重向量。
【例1-21】随机抽样示例。
输入代码如下: