--- title: 'R 語言學習心得-基礎篇3' disqus: hackmd --- R 語言學習心得 基礎篇3 === ![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) --- R的運算符號1 --- **除了基本的四則運算以外:** 1. Modulo : 10%%2 2. Power : 10**2 or 10^2 3. Integer division : 10 %/% 2 ![](https://i.imgur.com/vnwyaar.png) ---- R的運算符號2 --- ![](https://i.imgur.com/a4L3RRy.png) 1. A %in% B : A是否有在B向量裡面 2. 87有包含在85~90之間 3. 看Y裡面的元素是否包含在(0,2,4)向量中(依序) ---- R的運算符號3 --- ![](https://i.imgur.com/dxdzInk.png) **排序 :** 1. sort() : 小到大 2. order() : 一序列出順序編號 3. rev() : 倒過來排列 --- 數學函數 --- **常見的數學函數如下圖** ![](https://i.imgur.com/3STCXlX.png) ---- 統計函數 --- **常見的統計函數都有 : normal , chi-square ,t ,f …. 每一種統計函數又可以分4大類 : d/p/q/r** ```r d= density(密度) r= random generation(隨機) q = quantile(分位數) p=累積分布函數(累積機率) ``` ![](https://i.imgur.com/nYXidht.png) ---- **其他常用統計函數** ![](https://i.imgur.com/OnF9cGj.png) ---- 統計函數範例 --- 1. rnorm() : 產生符合**常態分佈的***隨機亂數* 2. r = random generation(隨機) 3. norm() = 常態分佈 ```r rnorm(n, mean = 0, sd = 1) #n=產生個數 sd=標準差 ``` ![](https://i.imgur.com/MznqO4v.png) ---- 統計函數範例2 --- 1. dnorm() : 產生符合常態分佈的機率密度 2. d= density(密度) 3. norm() = 常態分佈 ```r rn <- rnorm(n=300) rp <- dnorm(rn) a <- data.frame(num=rn,probability=rp);plot(a) ``` ![](https://i.imgur.com/GcQzsxu.png) ---- 統計函數範例3 --- 1. pnorm() : 小於等於某數所累積的機率 2. pnorm()是左尾累積 ![](https://i.imgur.com/VBOEVVH.png) 3. sample() : 產生隨機亂數 ```r sample(x= 1:10 , size = 10,replace = TRUE) # replace = TRUE 可產生重複數字 ; FALSE 則不能 #第一個x= 設定範圍 ``` ---- 統計函數範例4 --- **var()= 變異數 / sd() = 標準差 /min() /max()** ![](https://i.imgur.com/6iqI06N.png) 1. sd(x,na.rm=TRUE) 可剔除資料中的NA值 ---- 運算小技巧1 --- 1. set.seed(num) 2. 讓調適結果維持在定值 3. 適合用在需要產生固定的隨機數列(偽隨機) 4. num 不一定要整數 ![](https://i.imgur.com/pbtBK9g.png) ---- 運算小技巧2 --- 1. 中位數 : median(x) 2. 百分位數 : quantile(x) 3. 眾數沒有內建函數 : 可以自己定義 或使用組合(見下頁) ![](https://i.imgur.com/Xt3U1M3.png) ---- 運算小技巧3 --- ![](https://i.imgur.com/rnTSSq2.png) ```r table(a) | end(x)...x=向量 a | 回傳最後一個數與第一個數的指標 1 2 3 4 #出現的數字 end(c) 3 1 1 1 #出現次數 [1] 4 1 ``` ---- **快速函數組合的眾數** ```r a <- 向量 b <- names(sort(table(a))) a的眾數 <- b[end(b)[1]] ``` **等等會用自訂函數的方式建立眾數** :hamburger: ---- 線性回歸參數實例 --- **還記得 stat_smooth(method=”回歸方法”) 嗎?** **注意 : “data = “ 一定要寫不然會有error** ![](https://i.imgur.com/GMj1Dwk.png) --- 自訂函數1 --- 1. 與c語言的方式很像 2. 直接看例子 可以有return ![](https://i.imgur.com/5f9zK8H.png) ![](https://i.imgur.com/HEBuNA5.png) 3. 若系統偵測你尚未完成coding,換行時會有"+"號 ---- 自訂函數2 --- 1. R也有if-else 2. if-else判斷式有快速函數實現方式 ```r ifelse(判斷式 , True回傳值, False回傳值) ``` ![](https://i.imgur.com/La9Qbsl.png) ---- 自訂一個眾數function --- ![](https://i.imgur.com/qtyoIjA.png) **有興趣的可以去查詢每個函數的使用方法** **善用"?函數"去查詢吧** :+1: ---- 檔案讀取1 --- 1. 相對路徑 vs 絕對路徑 2. 相對路徑 : 與目標檔案在同一個目錄底下即可 3. 絕對路徑 : 每個上層目錄都要打出來 ```r relative path : 桌面有檔案A與檔案B=>在同一目錄(Desktop)底下 absolute path : C:\Users\user\Desktop\檔案A C:\Users\user\Desktop\檔案B ``` ---- 檔案讀取2 --- 1. 直接打上絕對路徑來讀取檔案 2. 使程式作業資料夾與檔案所在一致(相對路徑) 3. 將檔案複製(移動)到程式作業資料夾 :::success 教學將只介紹前2種 第3種可以請媽媽教你 ::: ---- 檔案讀取3 --- 1. read.table(file=”filename”, header=TRUE,sep=”,”) ```r Filename 要加副檔名 header=TRUE代表第一筆資料是欄位名稱 sep=”,” 以逗號分隔 ``` 2. read.csv(file=”filename”) 3. read.csv 可以少打一些字 :santa: ![](https://i.imgur.com/MuqUzaF.png) ---- :tea: Something Tricky :::danger 路徑中是 ” / ” 而非 “ \ ” window 複製路時是“ \ ” ,記得要改 ::: ---- 檔案讀取4(相對路徑) --- 1. 在讀取檔案前先將working資料夾 移到跟目標檔案一樣的目錄 2. 直接讀取目標檔案 ```r setwd() : set working directory getwd() : get working directory ``` ![](https://i.imgur.com/1joIEVZ.png) ---- head() & tail() --- **回傳變數、表格、矩陣、檔案或函數的部分資料** **head()傳回前面資料** **tail()則是傳回後面** ```r head(file,n=xL) …x line to show tail(file,n=xL) …x line to show ``` **R 內建一些data可以使用 : iris/tress ...** **可輸入 data() 來查詢內建資料集** ---- iris(安德森鳶尾花卉數據集) --- ![](https://i.imgur.com/4XFNrXI.png) --- ## Next Lesson ... 1. Decision trees 2. Drawing Special Graphics 3. more application in R ## More tutorial / note 1. [my coding-blog](fatcatcat-lab.blogspot.com) 2. [my movie-blog](fatcatcat-movie.blogspot.com) ###### tags: `R` `beginner` `cat` `tutorial`