- R语言数据可视化:科技图表绘制
- 芯智 龙胜编著
- 1135字
- 2024-12-31 20:29:42
1.5 数据存取与抽样
![](https://epubservercos.yuewen.com/BE7002/31397904004139506/epubprivate/OEBPS/Images/Figure-P41_1794.jpg?sign=1739434019-fu8pz3PKs1twE8gzkIBDQ59gegWY2P1O-0-9523913185b4e1c88dfb85a58b7a45a9)
前面介绍了各类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()。
![](https://epubservercos.yuewen.com/BE7002/31397904004139506/epubprivate/OEBPS/Images/Figure-P42_18124.jpg?sign=1739434019-h2pf5uefHerj3naeo6lO8BVpaQjUgZxB-0-c53ea19e39cf0d7b33690928b763fca2)
部分参数的含义如表1-3所示。
表1-3 参数含义
![](https://epubservercos.yuewen.com/BE7002/31397904004139506/epubprivate/OEBPS/Images/Figure-T42_18125.jpg?sign=1739434019-ZNAJkkynAwUu1w5xQSVxpWyV8exbYuY5-0-2d0c82a5f97b1fab0b800fa883bc3c07)
【例1-18】文件读取示例。
输入代码如下:
![](https://epubservercos.yuewen.com/BE7002/31397904004139506/epubprivate/OEBPS/Images/Figure-P42_18127.jpg?sign=1739434019-DJ8HX2n81hC2Atn6r1y5Kne9pdehZJKT-0-60195cfcbcc3d858ec6799e91218a711)
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()函数。
![](https://epubservercos.yuewen.com/BE7002/31397904004139506/epubprivate/OEBPS/Images/Figure-P43_18132.jpg?sign=1739434019-zY1vgKXAx9ZxRQD7H0igvSgMvEWH06Fp-0-c0680860ce6575e97472b4997b765686)
部分参数的含义如表1-4所示。
表1-4 参数含义
![](https://epubservercos.yuewen.com/BE7002/31397904004139506/epubprivate/OEBPS/Images/Figure-T43_18133.jpg?sign=1739434019-8uxj8M7KCjhags3p7WMKq915McNFoztf-0-bcc26bfddf32cd5762d635f05a1d64a0)
【例1-19】文件保存示例。
输入代码如下:
![](https://epubservercos.yuewen.com/BE7002/31397904004139506/epubprivate/OEBPS/Images/Figure-P44_2030.jpg?sign=1739434019-mcwiA05fbCN9JkYeiwJmAVFJBQzKUJGG-0-ee00c1f042a74e3e3ebae802aacd4ed1)
1.5.2 数据抽样
1.生成随机数
工作中,有时需要生成各类分布的随机数做模拟分析,R中产生随机数时,只需在相应分布函数前加字母“r”即可,如生成均值为0、标准差为1的正态分布随机数,代码如下:
![](https://epubservercos.yuewen.com/BE7002/31397904004139506/epubprivate/OEBPS/Images/Figure-P44_2033.jpg?sign=1739434019-W2x1q6Uj2DmuiiEnv0WE0IQBLgpOf70i-0-b2abcd1f414c8f6641d1cf74454b5c82)
如果需要每次运行都产生相同的一组随机数,可在生成随机数之前使用set.seed()函数设定随机数种子。例如:
set.seed(9)
使用相同的随机数种子,每次运行都会产生一组相同的随机数。
【例1-20】产生随机数示例。
输入代码如下:
![](https://epubservercos.yuewen.com/BE7002/31397904004139506/epubprivate/OEBPS/Images/Figure-P44_18137.jpg?sign=1739434019-K3ypMdmBrJ1rA5R6GTFudSFKcaL0ThRM-0-632b03bc22b3a922c24f15eda15476ba)
2.随机抽样
实验获取的数据会比较庞大,实际应用需要从中抽取一个简单随机样本以作为分析样本。R的sample()函数可以实现随机抽样,其语法格式为:
sample(x,size,replace=FALSE,prob=NULL)
其中,x是由一个或多个元素组成的向量,size是要抽取的元素个数(样本量),replace确定是否采取放回抽样,设置为TRUE表示有放回抽样,默认为FALSE(不放回抽样),prob是要抽取元素的概率权重向量。
【例1-21】随机抽样示例。
输入代码如下:
![](https://epubservercos.yuewen.com/BE7002/31397904004139506/epubprivate/OEBPS/Images/Figure-P45_18142.jpg?sign=1739434019-66fgsqgjMKFYbMRecjIdrvYkdKJSYRGa-0-b297efda23c530c404116326c4f1c839)