R教學 單元3 建立新變數及函數的介紹 羅琪老師.

Slides:



Advertisements
Similar presentations
減重藥膳與耳穴 台北市立聯合醫院 陽明院區 中醫科 林俐嘉 醫師 一、肥胖定義 1.BMI 超過 24─ 體重過重;超過 27─ 肥胖 BMI ( Body Mass Index ,身體質量指數)它是 身高與體重之間關係的一種指標,數值越大代表 一個人越胖。 個人體重(公斤)除以身高(公尺)兩次,就是.
Advertisements

設計者:陳麗妃 台南市新化國中 健康促進議題 --- 均衡飲食 與健康體 位. 一、均衡飲食  全穀根莖類  蔬菜類  水果類  豆魚肉蛋類  低脂奶類  油脂與堅果類  醣類  脂肪  蛋白質  維生素  礦物質  水 *六大類食物*六大類營養.
“ 上海市科研计划课题预算编制 ” 网上教程 上海市科委条财处. 经费预算表 表 1 劳务费预算明细表 表 2 购置设备预算明细表 表 3 试制设备预算明细表 表 4 材料费预算明细表 表 5 测试化验与加工费预算明细表 表 6 现有仪器设备使用费预算明细表 小于等于 20 万的项目,表 2 ~表.
2.5 微分及其应用. 三、可微的条件 一、问题的提出 二、微分的定义 六、微分的形式不变性 四、微分的几何意义 五、微分的求法 八、小结 七、微分在近似计算中的应用.
1 第 5 章 SQL 语句基础 在 Oracle 数据库中,为了方便管理用户所创建的 数据库对象,引入了模式的概念,这样用户所创建的 数据库对象就都属于该用户模式。对于一般的用户而 言,数据库中的数据是以表、视图行等方式存储的( 表和视图就是最基本的用户模式对象),用户只需要 根据自己的需求查询数据库,然后由数据库根据请求.
怎樣才算「識飲識食」? 適當 適量 在日常生活中進食 適當 和 適量 的食物 和飲料。 何謂「適當」? 1. 不偏食,選擇不同種類的食物和飲料, 以吸收不同的營養素。 2. 多進食營養價值高的食物。 3. 避免進食熱量、脂肪、糖份、鹽份和膽 固醇含量過高的食物,以及加工食品 ( 如 罐頭和即食麵.
你把什麼喝下肚 ? 竹林國小 99 年 4 月 22 日 延杰股份有限公司 營養師:楊雅雯. 你最喜歡喝哪一瓶 ??
均衡飲食與健康體位 逸馨園 營養師 鍾筱薇.
飲食與體重管理 主講者:鄭安君 營養師 泳翔食品股份有限公司.
社交礼仪.
胸部 主要骨骼标志 胸骨上切迹 胸骨柄 胸骨角 肋骨 肋间隙 剑突 肩胛骨 肋脊角. 胸部 主要骨骼标志 胸骨上切迹 胸骨柄 胸骨角 肋骨 肋间隙 剑突 肩胛骨 肋脊角.
損益表 原則: 收益與費用的計算,實際上是在實現或發生時所產生,與現金收付當時無關。
体 体 育 育 保 保 健 健 学 学 实 实 验 验 主讲人:王会凤 黄淮学院体育系.
糖尿病健康教育 广水市健康教育所 (2).
《中国共产党发展党员工作细则》 学习提纲 中共进贤县委组织部 宋 剑
严格发展程序,提高工作能力 黄 玉 2010年9月.
发展党员的流程和要求 党委组织部 萧炽成.
Dr. Baokun Li 经济实验教学中心 商务数据挖掘中心
如何提昇兒童語言及學習能力.
104學年長榮中學減重班 健康體位 實習處駐校營養師:黃媺婷.
健康體位及代謝症候群.
健康一二一 宜兴市疾病预防控制中心 周 茜
莫让情感之船过早靠岸 兴庆回中 赵莉.
(Body Mass Index,縮寫為BMI)
行政公文写作 第七章 2004年8月 行政公文写作.
高雄市101學年度高級中學生物科野外研習學習歷程報告
體重控制 輕鬆享「瘦」 永得有限公司 邱子恩 營養師.
论文撰写的一般格式和要求 孟爱梅.
九十四年度社區腎臟保健推廣 成果報告 財團法人彰化基督教醫院 楊郁 醫師.
主講者:簡言竹 護士 臺南市政府衛生局 關心您
認識健康體位: BMI:    維持18.5~24 腰圍: 男性:<90公分    女性:<80公分.
第九章 求职礼仪 本章从求职者的应聘资料准备、个人形象设计、言谈举止、应试技艺等方面作如下介绍。 求职前的准备: 一、知已知彼,有的放矢
三光國中營養教育活動 富鑫菓菜公司 營養師:楊訟芬
                                         減肥.
台南市永康區五王國小 體重過重學童衛教宣導
大 綱 重大變革事項 甄選員額 甄選資格 甄選期程 軍官基礎教育與服役.
組員:簡年佑組員:xxx 組員:xxx組員:xxx
第三章 幼儿园课程内容的编制与选择.
预备年级体育理论 肥胖与消瘦的危害.
第三章  电话、电子通讯   本章重难点:     打电话的方法、         接听电话的方法。
報告人:財團法人台灣癌症基金會執行長 賴基銘 醫師
營養講座系列- 健康飲食 VS 預防代謝症候群 永得有限公司 司徒蓁 營養師 主講.
栖霞区初三“千人培优”空中课堂 数据的集中趋势和离散程度 王 涵 2015年12月27日.
《社交礼仪分享》 阳晨牧业科技有限公司 市场中心 二O一二年四月十八日.
第十八章 药物疗法与过敏试验法 郭三花 岳月梅 忻州职院护理系.
普及纳米知识 推动科技进步.
100學年度高職校務評鑑簡報 報告人:校長 江銘鉦 日期:101年4月27日
会议文书.
健康減重飲食 高雄國軍總醫院 營養師余惠婷.
金門縣多年國小101學年度 推動健康促進學校成果簡報
如何写入团申请书.
幼兒健康與安全 中部地區幼兒電視收視行為與健康情形之相關研究
肥胖的防治.
第11周 工作计划.
健康體位講座 如何增進健康體適能 演講者:張書軒 老師 96.09.28.
10.2 直方图.
R教學 單元5 敘述統計 羅琪老師.
營養 營養師 陳姵蓉.
網路遊戲版 幸福農場168號.
第九章 結 帳 9-1 了解結帳的意義及功能 9-2 了解虛帳戶結清之會計處理 9-3 了解實帳戶結轉的會計處理
圓周 認識圓 圓的認識 圓面積.
Homework 1(1/2) 本頁表格為派密(Peavy)在07年球季各場次ERA的表現,(1)請依此數據完成下頁表格之統計值並說明之;(2)並與其他三名投手之統計值比較之。(請詳述計算過程) 場次 各場次ERA
中国大连高级经理学院博士后入站申请汇报 汇报人:XXX.
內部控制作業之訂定與執行 報告人:許嘉琳 日 期:
單元2 範例介紹、資料型態與資料讀取 羅琪老師
第參章 運動與健康.
健康久久.
軍校與民間大學之比較 軍校 民間大學 服裝食宿學雜費 由國家供給 除公費生外餘須自費 零用金 每月14,190元 父母供應或打工賺取 畢業
桃園縣楊梅國中 營養宣導教育-體重控制 ~~新年快樂~~ 主講者:羅秋香 營養師
分類樹(Classification Tree)探討Baseball Data
Presentation transcript:

R教學 單元3 建立新變數及函數的介紹 羅琪老師

利用公式建立新變數 範例問題: 利用身高(height)與體重(weight)來獲得身體質量指數(body mass index, BMI)。BMI代表身體質量指數,公式為 。 使用方法: 產生一新變數命名為BMI,利用公式計算其數值。

軟體操作步驟 利用R中read的方法,將單元2所介紹之資料輸入到R中,並命名為sleepdata。 > sleepdata<-read.csv("c:/RData/sleepdata.csv",header=T) > sleepdata > attach(sleepdata)

sleepdata資料檔 id v_y v_m v_d name sex b_y b_m b_d height weight pressuID pressure sleepHR1 sleepHR0 sleepTR1 sleepTR0 sleepQOL 1 97 25 Java 66 12 161.5 65 8.5 8.7 3 2 Alice 58 5 6 154.5 55 7.3 7.4 4 June 174.6 70 7 7.5 Jack 64 164 42 7.9 Jacoby 49 24 150 50 6.8 6.1 Peter 20 162 63 6.3 48 Kalare 72 176 9.3 Jame 73 9 28 155 45 8.9 Andy 67 10 7.7

利用公式建立新變數 所需使用資料如下: 資料排列 變數名稱 變數說明 變數類型 變數內容 height 身高 連續變數 公分 weight 體重 公斤 id … height weight 1   161.5 65 2 154.5 55 50 176

建立新變數BMI > height1<-height/100 # 將身高單位cm轉換成m > height2<-height1*height1 # 取身高(公尺)的平方 > bmi<-weight/height2 # 代入BMI公式,體重/(身高)2 > a<-cbind(sleepdata,bmi) # 將sleepdata和bmi結合 > a

做BMI的敘述統計 為確認我們的資料無誤,利用R中summary&sd的語法,做連續變項之簡單描述性統計分析,檢查BMI值是否在合理的範圍之內。觀察bmi的最小值、第一四分位數、中位數、第三四分位數、最大值 > summary(bmi) # 5個數字的摘要 Min. 1st Qu. Median Mean 3rd Qu. Max. 16.77 24.73 26.82 27.22 29.79 34.90 > sd(bmi) # 標準差 [1] 4.089639

利用條件式建立新的分組變數 BMI_a代表BMI分組,係按照下列分級標準分組 成人的體重分級與標準 重新編碼 分 級 身體質量指數 分 級 身體質量指數 BMI_a 體重過輕 BMI < 18.5 1 正常範圍 18.5 ≦ BMI <24 2 過 重 24 ≦ BMI < 27 3 輕度肥胖 27 ≦ BMI < 30 4 中度肥胖 30 ≦ BMI < 35 5 重度肥胖 BMI ≧ 35 6 資料來源:衛生署食品資訊網/肥胖及體重控制

根據原有變數代入條件式建立新變數 範例問題: 將身體質量指數分級,並建立分組變數。 使用方法: 產生一新變數命名為bmi_a,並利用條件式將BMI分組。

建立新的分組變數 > bmi_a<-bmi # 建立新變數bmi_a > bmi_a[0<bmi & bmi<18.5]<-1 # 將bmi分組 > bmi_a[18.5<=bmi & bmi<24]<-2 > bmi_a[24<=bmi & bmi<27]<-3 > bmi_a[27<=bmi & bmi<30]<-4 > bmi_a[30<=bmi & bmi<35]<-5 > bmi_a[bmi>=35]<-6 > cbind(sleepdata, bmi_a) # 將sleepdata與bmi_a資料合併

類別變數之描述性統計 > table(bmi_a) # 建立BMI分組的次數分配表 bmi_a 1 2 3 4 5 1 8 17 12 12

類別變數之描述性統計 另外,也可於R中引入套件prettyR,可同時製作百分比。 > library(prettyR) # 引入prettyR套件 > freq(bmi_a) # 建立次數分配表、百分比 Frequencies for bmi_a 3 4 5 2 1 NA 17 12 12 8 1 0 (次數) % 34 24 24 16 2 0 (含NA百分比) %!NA 34 24 24 16 2 (不含NA百分比)

利用條件式建立新的分組變數 BMI_b代表BMI分組,將bmi_a併為3組,即體重過輕、正常範圍及過重或肥胖等三組分組標準如下: 成人的體重分級與標準 重新編碼 併組 註解 分 級 身體質量指數 BMI_a BMI_b   體重過輕 BMI < 18.5 1 過輕 正常範圍 18.5 ≦ BMI <24 2 正常 過 重 24 ≦ BMI < 27 3 過重或肥胖 輕度肥胖 27 ≦ BMI < 30 4 中度肥胖 30 ≦ BMI < 35 5 重度肥胖 BMI ≧ 35 6 資料來源:衛生署食品資訊網/肥胖及體重控制

根據原有變數代入條件式建立新變數 範例問題: 將BMI分級標準併為過輕、正常及過重或肥胖三組。 使用方法: 產生一新變數命名為bmi_b,根據BMI分級標準(bmi_a)將其重新併組為過輕、正常及過重或肥胖三組。

建立新的分組變數 > bmi_b<-bmi_a # 建立新變數bmi_b > bmi_b[bmi_a=1]<-1 # 將bmi_a分組 > bmi_b[bmi_a=2]<-2 > bmi_b[bmi_a>=3]<-3 > cbind(sleepdata,bmi_a,bmi_b) # 將bmi_b、bmi_a與sleepdata資料合併

類別變數之描述性統計 > table(bmi_b) # 建立BMI分組的次數分配表 bmi_b 1 2 3 1 8 41

類別變數之描述性統計 另外,也可於R中引入套件prettyR,可同時製作百分比。 > library(prettyR) # 引入prettyR套件 > freq(bmi_b) # 建立次數分配表、百分比 Frequencies for bmi_b 3 2 1 NA 41 8 1 0 (次數) % 82 16 2 0 (含NA百分比) %!NA 82 16 2 (不含NA百分比)

利用日期函數建立年齡變數 利用日期函數ISOdate(year, month, day) 在資料處理中,我們經常會需要處理日期的計算,例如:從以下的訪視日期與個案的出生年、月、日資料去計算個案的年齡;一般統計軟體會提供日期函數,透過年、月、日的代入(此處年、月、日稱為此函數的3個引數)來處理日期的計算,此外,此處所指的”年”為西元年,故若資料為民國的年,則需加1911將之轉換為西元年。

利用日期函數建立年齡變數 個案代號 訪視日期 出生日期 Id v_y (年) v_m (月) v_d (日) b_y (年) b_m (月) b_d (日) 1 97 25 66 12 2 58 5 6 3 65 … 49 73 9 28 50 67 10

利用日期函數建立年齡變數 範例問題: 利用訪視日期及出生日期來計算個案的年齡。 使用方法: 產生一新變數命名為age,並利用日期函數計算訪視日期及出生日期的差異天數,再轉換為年齡。

利用日期函數建立年齡變數 # 計算b=填表日期-出生日期的天數 > age<-b/365.25 # 計算年齡 > age > b<-ISOdate(v_y+1911,v_m,v_d)-ISOdate(b_y+1911,b_m,b_d) # 計算b=填表日期-出生日期的天數 > age<-b/365.25 # 計算年齡 > age Time differences in days [1] 30.11910 38.72142 32.06023 32.15058 47.83847 30.09719 35.52635 36.49555 35.15674 24.71732 30.24230 44.33949 [13] 21.47023 40.36140 25.57153 40.02190 24.91718 27.79740 43.11020 24.45722 29.79877 27.45517 38.54620 47.26078 [25] 28.98563 35.44695 34.96509 44.99658 31.19781 23.71253 39.89596 25.50308 47.53183 20.47639 21.73854 45.32238 [37] 30.52704 20.25462 20.57495 37.41547 29.84531 33.36071 22.97604 20.36413 40.27379 37.33881 21.92471 24.72005 [49] 23.32375 29.25120

定量變數之描述性統計 > age1<-as.numeric(age) # 將年齡轉換成數字類型 > summary(age1) # 計算年齡的5個數字摘要 Min. 1st Qu. Median Mean 3rd Qu. Max. 20.25 24.77 30.38 32.00 38.26 47.84 > sd(age1) # 計算年齡的標準差 [1] 8.177942 此50個病人的平均年齡為32歲, 標準差為8.17歲

其他常見的函數 常見的統計函數應用: 新變數=統計函數(參數1,參數2,參數3,…) 範例問題: 利用函數來計算數個指定變數(例如:x1,x2,x3分別代表三次考試的成績)的有效樣本個數、遺漏值個數、平均值、變異數、標準差、中位數、變異係數、最大值、最小值等統計值。 使用方法: 產生新變數,並利用統計函數來計算所需要的統計值。

無遺漏值 > x1<-c(92,80,70) # 建立變數 > n1<-sum(!is.na(x1)) # 計算無遺漏值的個數 > n1_m<-sum(is.na(x1)) # 計算遺漏值的個數 > sum1<-sum(x1) # 計算總合 > mean1<-mean(x1) # 平均值 > var1<-var(x1) # 變異數 > sd1<-sd(x1) # 標準差 > cbind(n1,n1_miss,sum1,mean1,var1,sd1) n1 n1_miss sum1 mean1 var1 sd1 [1,] 3 0 242 80.66667 121.3333 11.01514

無遺漏值 > median1<-median(x1) # 中位數 > cv1<-(x7/x5)*100 # 變異係數CV > max1<-max(x1) # 最大值 > min1<-min(x1) # 最小值 > mean_a<-(92+80+70)/3 # 以數學式算平均值 > cbind(median1,cv1,max1,min1,mean_a) median1 cv1 max1 min1 mean_a [1,] 80 13.65513 92 70 80.66667

有遺漏值 # 在有遺漏值的情況下,函數後面需加上 ‘’na.rm=T’’ ,其會去除遺漏值進行計算 > x2<-c(93,NA,98) # 建立變數 > n2<-sum(!is.na(x2)) # 計算無遺漏值的個數 > n2_m<-sum(is.na(x2)) # 計算有遺漏值的個數 > sum2<-sum(x2,na.rm=T) # 計算總合 > mean2<-mean(x2,na.rm=T) # 平均值 > var2<-var(x2,na.rm=T) # 變異數 > sd2<-sd(x2,na.rm=T) # 標準差 > cbind(n2,n2_m,sum2,mean2,var2,sd2) n2 n2_m sum2 mean2 var2 sd2 [1,] 2 1 191 95.5 12.5 3.535534

有遺漏值 # 在有遺漏值的情況下,函數後面需加上 ‘’na.rm=T’’ ,其會去除遺漏值進行計算 > median2<-median(x2,na.rm=T) # 中位數 > cv2<-(sd2/mean2)*100 # 變異係數CV > max2<-max(x2,na.rm=T) # 最大值 > min2<-min(x2,na.rm=T) # 最小值 > mean_b<-(93+NA+98)/3 # 以數學式算平均值 > cbind(median2,cv2,max2,min2,mean_b) median2 cv2 max2 min2 mean_b [1,] 95.5 3.70213 98 93 NA

其他常見的函數 常見的數學函數應用: 新變數=數學函數(參數) 範例問題: 從數學運算函數計算所需的數值。 使用方法: 利用常用的數學函數計算所需的值。

數學函數 > x3<-c(80.6667,95.5000) # 建立變數x1 > log_x3<-log(x3) # 針對x3取log以e為底 > log10_x3<-log(x3,10) # 針對x3取log以10為底 > exp_x3<-exp(log10_x3) # 針對log10_x3取指數 > cbind(x3,log_x3,log10_x3,exp_x3) x3 log_x3 log10_x3 exp_x3 [1,] 80.6667 4.390326 1.906694 6.730802 [2,] 95.5000 4.559126 1.980003 7.242767

數學函數 > x3<-c(80.6667,95.5000) > f_x3<-floor(x3) # 針對x3取整數 > r_x3<-round(x3,0) # 針對x3四捨五入到整數位 > r1_x3<-round(x3,1) # 針對x3四捨五入到小數第一位 > sqrt_x3<-sqrt(x3) # 針對x3開根號 > cbind(x3, f_x3,r_x3,r1_x3,sqrt_x3) x3 f_x3 r_x3 r1_x3 sqrt_x3 [1,] 80.6667 80 81 80.7 8.981464 [2,] 95.5000 95 96 95.5 9.772410

其他常見的函數 日期函數的應用: 範例問題: 從文字格式的日期資料中,計算年齡。 使用方法: 利用利用文字萃取函數的日期,獲得部分字串,將其轉換為數值後,再以日期函數計算年齡。

日期函數 > b_day<-“061087” # 建立一串文字型的數列 > dt_char<-substr(b_day,1,2) > dt_char [1] "06" > mn_char<-substr(b_day,3,4) > mn_char [1] "10" > yr_char<-substr(b_day,5,6) > yr_char [1] "87" # 以substr函數選取需要的文字,substr(資料,開始選取的位置,選取結束的位置)

日期函數 # 將以上的文字以as.numeric函數變成數字 # 將所有選取好的數字轉變成日期型式,函數為ISOdate(年,月,日) > dt_num<-as.numeric(dt_char) > dt_num [1] 6 > mn_num<-as.numeric(mn_char) > mn_num [1] 10 > yr_num<-as.numeric(yr_char) > yr_num [1] 87 > b<-ISOdate(yr_num+1911,mn_num,dt_num) > b [1] "1998-10-06 12:00:00 GMT" > age<-(Sys.time()-b)/365.25 > age Time difference of 17.46348 days # 將所有選取好的數字轉變成日期型式,函數為ISOdate(年,月,日) # Sys.time()函數可以顯是當下的日期,令資料為age將選取好的日期與當下的日期相減得到年齡

付出最多的人,也是收穫最多的人 ~共勉之~