- R語言數據可視化:科技圖表繪制
- 芯智 龍勝編著
- 1135字
- 2024-12-31 20:29:41
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】隨機抽樣示例。
輸入代碼如下:

- Cocos2D-X權威指南(第2版)
- 深入淺出Electron:原理、工程與實踐
- 零基礎學Scratch少兒編程:小學課本中的Scratch創意編程
- 深入淺出Prometheus:原理、應用、源碼與拓展詳解
- STM32F0實戰:基于HAL庫開發
- Hands-On Swift 5 Microservices Development
- Unreal Engine 4 Shaders and Effects Cookbook
- UML 基礎與 Rose 建模案例(第3版)
- Apache Spark 2.x for Java Developers
- Visual Basic程序設計
- Unity 2017 Mobile Game Development
- Illustrator CS6設計與應用任務教程
- 零代碼實戰:企業級應用搭建與案例詳解
- Learning Kotlin by building Android Applications
- Java Web開發基礎與案例教程