- R語言數據可視化之美:專業圖表繪制指南
- 張杰
- 6字
- 2019-09-20 14:52:52
2.1 表格的轉換
2.1.1 表格的變換
在使用R ggplot2繪圖時,通常使用一維數據列表的數據框。但是如果導入的數據表格是二維數據列表,我們則需要使用reshape2包的melt()函數或者tidyr包的gather()函數,可以將二維數據列表的數據框轉換成一維數據列表(見圖2-1-1)。我們首先構造數據框:

圖2-1-1 表格變換的示意案例
df<- data.frame(x=c('A', 'B', 'C'), '2010'=c(1,3,4), '2011'=c(3,5,2), check.names=FALSE)
(1)將寬數據轉換為長數據,將多行聚集成列,從而將二維數據列表變成一維數據列表:
df_melt<- reshape2::melt(df, id.vars="x", variable.name="year", value.name = "value") df_gather<- tidyr:: gather(df, year, value, -x)
其中,id.vars ("x")表示由標識變量構成的向量,用于標識觀測的變量;variable.name ("year")表示用于保存原始變量名的變量的名稱;value.name("value")表示用于保存原始值的名稱。
(2)將長數據轉換為寬數據,將一列根據變量展開為多行,從而將一維數據列表變成二維數據列表:
df_dcast<- reshape2:: dcast(df_melt, x~year, value.var="value") df_spread <- tidyr::spread(df_gather, year, value)
其中,dcast借助于公式來描述數據的形狀id.vars~variable.name,左邊參數表示id.vars ("x"),而右邊的參數表示需要variable.name ("year")。
推薦閱讀
- R語言數據分析從入門到精通
- Mastering Selenium WebDriver
- Vue.js快跑:構建觸手可及的高性能Web應用
- Android NDK Beginner’s Guide
- Hands-On C++ Game Animation Programming
- HTML5+CSS3網站設計基礎教程
- concrete5 Cookbook
- C++新經典
- Learning Unity 2D Game Development by Example
- Access 2010數據庫應用技術(第2版)
- Android系統級深入開發
- SQL基礎教程(第2版)
- Python機器學習算法: 原理、實現與案例
- Procedural Content Generation for C++ Game Development
- Java Fundamentals