--- title: 'R 語言學習心得-基礎篇2' disqus: hackmd --- R 語言學習心得 基礎篇2 === ![downloads](https://img.shields.io/badge/download-R-brightgreen) ![grade](https://img.shields.io/badge/Grade-新手-brightgreen) ![chat](https://img.shields.io/discord/:serverId.svg) --- ## dataframe what is a dataframe? it's something like Excel 1. R語言/python中類似試算表的表格 2. Column : 變數 Row : 完整的觀測資料 3. 不同column的元素個素基本上相同(可以不同) 4. 每個column都由向量組成 5. 不同的column 可以儲存不同型態的資料 ---- dataframe --- ![](https://i.imgur.com/TtkFbN5.png) (圖片來自youtube 截圖) ---- dataframe --- ![](https://i.imgur.com/jsHii6v.png) 1. 建立方式1: data.frame(x,y,z...) 2. 建立方式2: data.frame(名稱1=x,名稱2=y,名稱3=z...) 3. 同一個column 內不同元素長度可不同 ---- 動手試試~ --- ![](https://i.imgur.com/aMpJ8rA.png) ![](https://i.imgur.com/DE6YfpG.png) 1. 使用方法2來建立dataframe 2. 若將輸入順序調整後frame也會變喔 :heavy_check_mark: --- dataframe小實驗 --- 1. 不同column的元素個素基本上相同(可以不同) 2. 剛剛的資料都是在元素個素相同的情況,那如果是括號中的情況呢? 3. Try it !(R會自動重複出現過的元素來填補空缺) ![](https://i.imgur.com/JkxlxLL.png) ---- dataframe小實驗 --- ![](https://i.imgur.com/n5FYraz.png) 1. 第一次會失敗的原因是number of rows (4,2,3) 2. 所有較小的rows數必須要是最大的rows的因數 3. 我們將z 拿掉一個 "c",剩下2個元素 4. 成功 :100: ---- 技巧1.取出dataframe資料 --- 1. 與取出向量相同用 " [] " 2. A[rows,columns]就可以取出對應的元素 3. " [] "內也可以使用c函數進行組合 4. 也可以使用"$"來指定要處理column名稱 :::info **第一個位置索引值是1!!!** ::: ![](https://i.imgur.com/24csqBO.png) ---- 技巧2.取出dataframe資料 --- ![](https://i.imgur.com/AzlWsYb.png) 1. 矩陣的取出寫法也同樣適用於這裡 --- 繪圖功能 --- 1. R語言有內建的繪圖功能 ex. hist() 2. ggplot2 是個強大的繪圖套件 3. ggplot2 繪圖更漂亮且有彈性 4. 請安裝ggplot2 ```r install.packages(ggplot2) library(ggplot2) #使用前記得先include 進來 ``` ---- :::warning ggplot2的使用函數是 ggplot()!不是ggplot2()! ::: ```r library(ggplot2) head(diamonds) #diamonds 是個ggplot2內建的dataframe ``` 1. 先將ggplot2引入 2. 使用內建diamonds資料框 ![](https://i.imgur.com/VmifzWl.png) ---- 直方圖 --- 1. 內建函數 hist(data) 如下圖 2. 可增加 main ,xlab ,ylab等參數 3. hist(diamonds$x,main="圖名",xlab="x軸名",ylab="y軸名") ![](https://i.imgur.com/KTOIAJk.png) ---- 直方圖2 --- 1. ggplot(data)+geom_histogram(aes(x=name,y=name2),fill="X") 2. X 可以是資料內的另一column也可以是顏色(ex.fill="#BADDCC") ![](https://i.imgur.com/rJ08nuA.png) ---- 顏色選取 & 圖中加入多組數據 --- 1. 使用內建支援 ex. "red" 2. 使用色碼表可自行搜尋或使用[推薦網站](https://www.webdesignrankings.com/resources/lolcolors/) 3. 推薦網站內有現成的配色可使用,有利多組數據視覺化 4. ggplot 中多組數據在同一張圖就用 "+"連接 ```r ggplot(data)+geom_histogram(aes(x=name),fill="X1")+ geom_histogram(aes(x=name),fill="X2") ``` ---- ![](https://i.imgur.com/loisQV1.png) ```r ggplot(diamonds)+geom_histogram(aes(x=x),fill="#BADDCC") +geom_histogram(aes(x=price),fill="#E53A40") ``` ---- 點圖 --- 1. 內建 plot(x,y,col="顏色") 2. 內建顏色共有657個(查看請用下方程式碼) ```r c1 <- colors() c1[1:length(c1)] ``` ![](https://i.imgur.com/Xbm25CQ.png) ---- 點圖2 --- 1. ggplot(diamonds,aes(x=carat,y=price))+ geom_point(aes(color=color)) 2. diamonds的資料中根據color那行來做顏色區分 ![](https://i.imgur.com/MfJZwcO.png) ---- :muscle: 分開顯示 :muscle: --- 1. 學起來直接酷翻天 2. facet_wrap(~分開的column) ```r ggplot(diamonds,aes(x=carat,y=price))+geom_point(aes(color=color))+facet_wrap(~color) ``` ![](https://i.imgur.com/kbqGrpS.png) ---- 線性回歸 --- 1. stat_smooth(method=”回歸方式”) 2. “lm” = 簡單線性回歸 "loess" = 局部加權回歸散點平滑法 ```r ggplot(diamonds,aes(x=carat,y=price))+geom_point(aes(color=color))+stat_smooth(method=”lm”) ``` ![](https://i.imgur.com/D4wp3a1.png) ---- 多項式回歸 --- 1. stat_smooth()不指定回歸方式時採用 2. 灰色區域為正負一標準差 ![](https://i.imgur.com/WZEGYlt.png) --- 特殊圖形 --- 1. boxplot() : 盒子圖 2. 最大值、最小值、中位數、及上下四分位數 ```r ggplot(diamonds,aes(x=cut,y= carat))+geom_boxplot() ``` ![](https://i.imgur.com/9CPOieT.png) ---- 特殊圖形2 --- 1. violin plot : 小提琴圖 2. 顯示各個部分佔比 ```r ggplot(diamonds,aes(x=cut,y= carat))+geom_violin(color=cut) ``` ![](https://i.imgur.com/V5taxPA.png) ---- 特殊圖形3 --- 1. geom_bar() : 堆疊長條圖 2. 顯示各個部分佔比 ```r ggplot(diamonds,aes(x=cut,fill=cut))+geom_bar() ``` ![](https://i.imgur.com/w0oXVLI.png) --- ## Next Lesson ... 1. Statics application 2. Drawing More Graphics ## More tutorial / note 1. [my coding-blog](fatcatcat-lab.blogspot.com) 2. [my movie-blog](fatcatcat-movie.blogspot.com) ###### tags: `R` `beginner` `cat` `tutorial`