---
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`