版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、條件與迴圈等程式技巧Data FramesData frames: it is a rectangular table with rows and columns; data within each column has the same type (e.g. number, text, logical), but different columns may have different types.資料篩選資料轉(zhuǎn)換(變更coding)將資料按照性別分成兩群,令新變數(shù)為sex_c男生(原始資料記為1): sex_c=“male”女生(原始資料記為0): sex_c=“female”將資料按照年
2、紀分成四群,另外令一個變數(shù)為agegroup第一群:40歲以下,則agegroup=1第二群:4049歲,則agegroup=2第三群:5059歲,則agegroup=3第四群:60歲以上,則agegroup=4條件執(zhí)行指令條件控制:ifelse函數(shù);if, else if 與 else指令1:ifelse(condition, yes, no) 用於最簡單的二分類判斷狀況通常用於簡單的變數(shù)計算。指令2: if ( condition_1 ) expression_1 else if ( condition_2 ) expression_2 else if ( condition_3 ) ex
3、pression_3 else expression_4判斷式中的運算子指令說明例子 , =, 相當於判斷x=3判斷式中的運算子if() 或 while() 括弧內(nèi)當使用&與|跟與| 是有差別的。&與 | 代表and 與or:適用於單一真假值的判斷。與 | 也代表and 與or:適用於向量式的真假值運算。如果運算對象為數(shù)字或是數(shù)字變數(shù),則兩種運算子沒有差異;但若運算對象是向量或多維度的陣列、data frame,就有明顯的區(qū)別判斷式中的運算子ifelse 用法指令1:ifelse(condition, yes, no)若x10 則 y=1, 若x=10 則 y=2x=c(1,2,3,4,5),
4、若x中的元素小於3,則z=x*y,否則 z=x*log(y)if 用法只有if : if ( condition ) expression 如果判斷條件為真,則執(zhí)行括弧後面的運算式 多於一個執(zhí)行狀況時,使用:if else 用法指令2: if ( condition_1 ) expression_1 else if ( condition_2 ) expression_2 else if ( condition_3 ) expression_3 else expression_4Note:if() 小括弧內(nèi)的邏輯判斷式為一個 TRUE/FALSE的值,雖然也可以是一個由TRUE/FALSE組合
5、而成的邏輯向量。但只要這個邏輯向量的第一個元素值為TRUE,則邏輯判斷式就算為真如:if else 容易產(chǎn)生的錯誤不會產(chǎn)生錯誤的寫法:if else寫在同一列if else 容易產(chǎn)生的錯誤會產(chǎn)生誤判的寫法:(1) R誤認為第一列已經(jīng)是一個完整且結(jié)束的單獨if運算式,所以 第二列的else會被認為缺乏if,故產(chǎn)生錯誤。(2) R認為第二列已結(jié)束完整的if 運算式,所以第三列錯誤。if else 容易產(chǎn)生的錯誤建議寫法:在if, else if, 以及else之後都加上,並依照下列 格式撰寫正確寫法: if ( condition_1 ) expression_1 else if ( condit
6、ion_2 ) expression_2else if ( condition_3 ) expression_3 else expression_4如:迴圈(Loop)迴圈:主要由 for 、 while 與 repeat 所構(gòu)成迴圈範圍中可以使用break跳出迴圈,或是使用next跳過剩下的敘述句,直接進入下一個迴圈。R裡面可用向量或是矩陣運算函數(shù)取代迴圈的運算,執(zhí)行速度會更快。for 迴圈指令1: for (迴圈變數(shù)in 範圍) 單一完整運算式指令2: for (迴圈變數(shù)in 範圍) 一個或多個運算式迴圈變數(shù):通常使用i, j, k, l, m等英文字母範圍:通常是一個數(shù)值向量,如:for
7、 (i in 1:10)利用for 迴圈計算1+2+9+10while 迴圈指令: while (可繼續(xù)留在迴圈內(nèi)的邏輯判斷式) 一個或多個運算式 利用while迴圈計算1+2+3+100repeat 迴圈指令: repeat 一個或多個運算式 if (離開迴圈的條件) break 其他可能的完整運算式 利用repeat迴圈計算1+2+3+100break 與 next: 改變迴圈狀態(tài)R迴圈內(nèi)無論是使用for, while或是repeat,都可以藉由break與next來改變迴圈的狀態(tài)。break:終止並跳離迴圈,通常是接在某個條件執(zhí)行式之後。範例:列印s內(nèi)的會員姓名,但
8、若遇到姓名為John的人跳離迴圈break 與 next: 改變迴圈狀態(tài)next:不終止整個迴圈結(jié)構(gòu)的執(zhí)行,但是next會忽略跳過目前這一次迴圈,剩下的其他運算式,直接跳到下一次迴圈。範例:只加總1100中的單數(shù)資料轉(zhuǎn)換(變更coding)將資料按照性別分成兩群,令新變數(shù)為sex_c男生(原始資料記為1): sex_c=“male”女生(原始資料記為0): sex_c=“female”將資料按照年紀分成四群,另外令一個變數(shù)為agegroup第一群:40歲以下,則agegroup=1第二群:4049歲,則agegroup=2第三群:5059歲,則agegroup=3第四群:60歲以上,則ageg
9、roup=4迴圈與控制指令agegroup = rep(0,15)for (i in 1:15) if (agei=40)&(agei=50)&(agei60) agegroupi= 3 else agegroupi= 4datanew = cbind(data,agegroup) # 將新變項agegroup與data結(jié)合datanew練習計算BMI值:BMI體重(公斤)身高2(公尺2)最健康的BMI值為22,若身體質(zhì)量指數(shù)超過23為過重,超過27為肥胖,若超過35則為極度肥胖。 加一欄身高資料,將資料做combine,資料為:(170,176,154,144,160,140,150,161
10、,166,155,141,143,150,172,150)cm令一新的變數(shù)為BMI,計算每個人的BMI值。若BMI=22,令BMIindex=1若22BMI=27,令BMIindex=2若27BMI35,令BMIindex=4練習利用while迴圈做1/x在x=1的泰勒展式: 若x=0.3,試求泰勒展式要加總到第幾項,才會跟實際值1/0.33.3333 差距在0.00001以內(nèi)。使用(-1)(i%2)來控制每一項的正負交錯;%是在求餘數(shù)。練習利用repeat迴圈做1/(1-x)的泰勒展式: 若x=0.3,試求泰勒展式要加總到第幾項,才會跟實際值1/(1-0.3)1.428571 差距在0.00
11、001以內(nèi)。自訂函數(shù)語法自訂函數(shù)名稱function(變數(shù)1, 變數(shù)2, 變數(shù)3,)expressionR軟體預設(shè)將函數(shù)內(nèi)最後一個運算式當作回傳值。若要更改預設(shè),可使用return() 將計算值回傳。return() 函數(shù)傳回的值可包含R軟體的各種變數(shù)種類,如:向量、矩陣、但大多都採用list變數(shù)當作回傳值。因為list變數(shù)可包含不同長度、不同變數(shù)種類的元素,可回傳多個不同屬性的函數(shù)計算結(jié)果。自訂函數(shù)自訂函數(shù)Ex1:自訂函數(shù)Ex2:Ex3:自訂函數(shù)眾數(shù)自訂函數(shù)-練習利用迴圈,寫出將任一向量加總的函數(shù)特殊的函數(shù)用法參數(shù):將自訂函數(shù)裡面用到的其他function需要的參數(shù)傳入常用函數(shù)統(tǒng)計相關(guān)函數(shù)s
12、um(x) 向量x所有元素的總和prod(x) 向量x所有元素相乘max(x) 向量x所有元素最大的元素值min(x) 向量x所有元素最小的元素值range(x) 傳回x的全距l(xiāng)ength(x) 計算向量x的元素個數(shù)mean(x) 計算x所有元素的平均數(shù)median(x) 計算x所有元素的中位數(shù)var(x), cov(x) 計算x所有元素的樣本變異數(shù)cor(x) 當x為data frame時,傳回x的相關(guān)矩陣var(x, y) 與 cov(x,y) 計算x與y的共變異數(shù)(covariance)矩陣cor(x,y) 計算x與y的相關(guān)係數(shù)或相關(guān)係數(shù)矩陣常用函數(shù)統(tǒng)計相關(guān)函數(shù)rev(x) 將x所有元素
13、反向呈現(xiàn)(未排序)sort(x) 將x內(nèi)的元素從小到大排序rev(sort(x) 將x內(nèi)的元素從大到小排序rank(x) 傳回x中各元素的排序順序值choose(n,k) 計算二項式組合數(shù) n!/(n-k)!k!factorial(x) 階乘函數(shù),相當於prod(1:x)常用工具函數(shù)處理NA (missing data)的函數(shù)na.fail(x):若x包含missing values則傳回錯誤訊息,否則傳回x。na.pass(x):保留x的NA值。na.omit(x)與na.exclude(x):去除NA元素。最大概似估計量(MLE)MLE: 利用package(stats4) 中的mle函數(shù)Usage: mle(minuslogl, start, method)minuslogl:計算 -
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年旅游公司浮動抵押合同
- 個人住宅租借押金及季度租金合同樣本(2024版)一
- 二零二五年度專業(yè)印刷品設(shè)計、印刷與打印服務(wù)合同3篇
- 事業(yè)單位基本建設(shè)粉刷工程分包合同2024版B版
- 2025年度烘焙連鎖面包磚供應(yīng)鏈合作協(xié)議4篇
- 二零二五年度干股虛擬股分紅激勵方案合同范本
- 2025年度玩具貨物運輸委托服務(wù)協(xié)議
- 二零二五年度物業(yè)小區(qū)個人承包社區(qū)物業(yè)服務(wù)綜合解決方案協(xié)議
- 2025年度家用空調(diào)拆裝安全操作規(guī)范及應(yīng)急處理合同
- 二零二五年度家政服務(wù)公司保姆雇傭協(xié)議
- 海外資管機構(gòu)赴上海投資指南(2024版)
- 山東省青島市2023-2024學年七年級上學期期末考試數(shù)學試題(含答案)
- 墓地銷售計劃及方案設(shè)計書
- 從偏差行為到卓越一生3.0版
- 優(yōu)佳學案七年級上冊歷史
- 鋁箔行業(yè)海外分析
- 紀委辦案安全培訓課件
- 超市連鎖行業(yè)招商策劃
- 城市道路智慧路燈項目 投標方案(技術(shù)標)
- 【公司利潤質(zhì)量研究國內(nèi)外文獻綜述3400字】
- 工行全國地區(qū)碼
評論
0/150
提交評論