R軟體基本使用 R軟體安裝與基本使用 R基本運算和變數種類 R資料處理功能 4 2 3 1 R的資料輸出入.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

計算機程式語言實習課.
Views ,Stored Procedures, User-defined Function, Triggers
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
題目:十六對一多工器 姓名:李國豪 學號:B
Chapter 5 迴圈.
R 基础培训 Mango - Solutions ShangHai China.
R軟體基本使用 R軟體安裝與基本使用 R基本運算和變數種類 R的版面配置與繪圖功能 資料輸出入與資料處理.
LINQ 建國科技大學 資管系 饒瑞佶.
Visual C++ introduction
JDK 安裝教學 (for Win7) Soochow University
大綱 Labview 環境介紹 數值(Numeric) 布林值(Boolean)與比較(Comparison) 結構(Structure)
2-3 基本數位邏輯處理※.
R軟體與統計分析(上) R軟體安裝與基本使用CH1 2 8 R基本運算和變數種類CH3 4 資料輸出入與資料處理CH5 6
第八章 利用SELECT查詢資料.
Java程式概觀.
C語言簡介 日期 : 2018/12/2.
生物資訊程式語言應用 Part 3 Perl Language.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
MINITAB基本操作 說明者:吳東陽          2003/09/30.
安裝JDK 安裝Eclipse Eclipse 中文化
A short R session (一個簡短的R課程) 羅琪老師
R语言简介 来源 R是S语言的一种实现。S语言是由 AT&T贝尔实验室开发的一种用 来进行数据挖掘、统计分析、作图的解释型语言。最初S语言的实 现版本主要是S-PLUS。S-PLUS是一个商业软件,它基于S语言, 并由MathSoft公司的统计科学部进一步完善。 1995年由新西兰Auckland大学统计系的Robert.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A.
App Inventor2呼叫PHP存取MySQL
檔案與磁碟的基本介紹.
第二章 SPSS的使用 2.1 啟動SPSS系統 2.2 結束SPSS系統 2.3 資料分析之相關檔案 2.4 如何使用SPSS軟體.
Introduction to Bioinformatics
雲端計算.
Java 程式設計 講師:FrankLin.
Chap3 Linked List 鏈結串列.
Python 補充 Python基本使用 p2-18 CSV檔案存取應用 p19-27 矩陣輸出入 p28-36(csv+numpy)
程式設計實習課(四) ----C 函數運用----
第一單元 建立java 程式.
雲端計算.
輸入&輸出 函數 P20~P21.
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
CH05. 選擇敘述.
期末考.
撰寫MATLAB基礎財務程式 柯婷瑱.
挑戰C++程式語言 ──第8章 進一步談字元與字串
GridView.
GridView操作 (II).
如何使用Gene Ontology 網址:
C qsort.
挑戰C++程式語言 ──第7章 輸入與輸出.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
MiRanda Java Interface v1.0的使用方法
函數應用(二)與自定函數.
基本指令.
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A.
資料表示方法 資料儲存單位.
資料結構與C++程式設計進階 期末考 講師:林業峻 CSIE, NTU 7/ 15, 2010.
Cloud Training Material- 事件 Sherman Wang
連結資料庫 MYSQL.
Programming & Language Telling the computer what to do
Test for R Data Processing & Graphics
單元三:敘述統計 內容: * 統計量的計算 * 直方圖的繪製.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
生命科学学院 生物信息学实验室 冯聪 03/18, 2019 Hangzhou
SQLite資料庫 靜宜大學資管系 楊子青.
Unix指令4-文字編輯與程式撰寫.
方法(Method) 函數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

R軟體基本使用 R軟體安裝與基本使用 R基本運算和變數種類 R資料處理功能 4 2 3 1 R的資料輸出入

R軟體簡介、安裝R、直接執行R指令、撰寫R程式及自訂函數、使用輸出入資料檔、程式執行結果的記錄檔、使用內建資料檔

R軟體簡介 R軟體包含資料處理、統計分析、科學運算、圖形功能及資料探勘等功能。 R軟體最早是由奧克蘭大學的Robert Gentleman & Ross Ihaka兩位學者於1995年仿S語言(1976貝爾實驗室研發)而發展出來的統計軟體。目前R軟體則是開放原始碼,陸續還會有許多套件(packages)的新增與更新,不斷地擴充R軟體的功能。 R軟體的主要組成包括:R核心程式與基本套件、R直譯器、眾多套件與函數、GUI。

下載R軟體 http://www.r-project.org

範例一:直接執行R指令

help指令或?查詢rnorm函數

plot指令畫出的X-Y散佈圖

範例二:撰寫R程式

執行程式檔

R程式撰寫說明 > 字號為輸入指令的提示符號,一行多個運算式可以;號隔開,一個運算式可分成多行 # 字號之後為註解,程式不會執行 + 字號表示尚未輸入完成,可按Esc離開 ↑鍵可自動重複上一個指令 Assign符號可為<- 或=號,以()括住指令直接顯示資料 變數或函數名稱可以是英數字加底線或句點,第一個字必須是英文,有大小寫的差異 NA表示missing value 、NaN表示not a number 、NULL表示empty object 檔案路徑可寫成sink("c:/R/sink.log")或sink("c:\\R\\sink.log")

撰寫自訂函數mybmi mybmi<-function(h,w) { bmi=w/(h/100)^2 return(bmi) } 程式檔名為myfun.R

要用時直接載入執行

使用自訂函數mybmi

範例三:使用輸出入資料檔 以read.table指令讀入此檔,放在資料框架變數mydata

自訂函數mybmi執行結果

將數個變數組成資料框架變數

輸出成文字資料檔 以write.table指令將資料框架變數all 輸出到檔案

範例四:記錄程式執行的結果 mydata=read.table("c:/r/input.txt", header= TRUE) #設定記錄結果的檔名 sink("c:/R/sink.log") summary(mydata) summary(mydata$weight) summary(lm(mydata$height~ mydata$weight)) #以sink()結束記錄動作 sink()

記事本開啟的結果檔

範例五:使用內建資料檔

iris的基本敘述統計

練習:乳腺癌醫學診斷應用 本範例檔wdbc.txt的乳腺癌(Breast Cancer Diagnostic)的診斷資料,取自美國加州大學歐文分校的機械學習資料庫http://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+%28Diagnostic%29 Wisconsin大學臨床研究中心於1995年蒐集569例乳腺癌症的病患實際診斷資料,診斷的方式是對於可疑的乳腺腫塊使用細針穿刺的技術 (Fine Needle Aspirate, FNA)蒐集數位化圖像並加以計算

乳腺癌醫學診斷欄位說明 wdbc.txt的欄位計有32項,分別是 1. 識別號碼(ID number):識別號碼 2. 診斷結果(Diagnosis):惡性(M = malignant)、良性(B = benign) 3-32. 這30項資料是計算每一個細胞核的真實資料測量值,包含以下的內容:半徑(radius)、紋理(texture)周長(perimeter)、範圍(area)、平滑度(smoothness)、緊密度(compactness)、凹陷部分的程度(concavity)、凹陷部分的數量(concave points) 、對稱度(symmetry) 、碎型維度(fractal dimension)

wdbc=read.table("d:\\stella\\R\\wdbc.txt",header=T,sep=",") #redirect screen output to file sink("d:\\stella\\R\\out.txt") summary(wdbc) # descriptive statistics head(wdbc) # browse 6 records attach(wdbc) # do not need wdbc$c1 # cat is printing function, \t \n are tab newline cat("c1 mean=",round(mean(c1),2),"\tc1 std=",round(sd(c1),2),"\n") cat("c2 mean=",round(mean(c2),2),"\tc2 std=",round(sd(c2),2),"\n") sink()

R軟體基本運算、R的資料屬性、向量變數、陣列變數、矩陣變數、因子變數、串列變數、資料框架變數、時間數列變數

greater than or equal to 算術、比較、邏輯運算子 Arithmetic算術 Comparison比較 Logical邏輯 + addition < lesser than !x NOT - subtraction > greater than x&y AND * multiplication <= lesser than or equal to x&&y AND條件 / division >= greater than or equal to x|y OR ^ 或** power == equal x||y OR條件 %% modulo != different xor(x,y) exclusive OR %/% integer division >a=c(0,1,0,1) >b=c(0,0,1,1)   向量邏輯運算 >a&b或 a|b 

R軟體字串和有序數列運算

R軟體基本向量運算(vector)

R軟體基本統計運算

R的資料屬性 Logical—邏輯TRUE(T) 、 FALSE (F) Integer—整數 Double—又稱real或 numeric Complex—複數 3+2i或寫成 x= complex( real=3,imaginary=2) Character—文字字串(character或string) name=“John” Raw—二進位資料

向量變數(Vector) 可視為一個集合或有序(ordered)物件,元素屬性需相同 從1開始的指標系統,如x[3]指向x向量的第3個元素,x= x[-5]可刪除x向量的第5個元素 向量變數常用的函數: is.vector(x)、 c()、length、dim、names 、matrix(x,r,c) 將向量x轉為r列c行的矩陣

向量變數常用的函數

陣列變數(Array) 陣列變數可視為多維度版本的向量變數,元素屬性需相同,如x[i,j,k] 陣列變數常用的函數: rbind、 cbind、array函數是以逐欄方式放資料、 length、ncol、nrow 、column、 row、 dim、 colnames、 rownames、 dimnames 、aperm轉置

陣列變數常用的函數

矩陣變數(Matrix) 矩陣變數是陣列變數的2維特例,例如x[i,j] 矩陣變數常用的函數: t(x) : 轉置矩陣 as.matrix(x) : 將框架變數轉成矩陣型態 %*% : 矩陣相乘或矩陣和向量相乘(加減+ -) diag(x) : 對角線 diagonal det(x) : 行列式值 determinant solve(x) : 反矩陣 inverse matrix eigen(x) :特徵值與特徵向量eigenvalue matrix(1:20,nrow=5,ncol=4,byrow=TRUE) cbind、 rbind、 colnames、 rownames 、 dim

矩陣變數常用的函數 A[2, ] A[ ,1] A[1,2]

因子變數(Factor) 因子變數可用來儲存分類變數,很像是文字向量,若因子變數各分類間有特定順序關係,則稱為有序(ordered)因子變數,可以用來比較大小 因子變數常用的函數: factor、as.factor:建立因子變數 ordered、as.ordered:建立有序因子變數 levels:查詢或設定分類資料

因子變數常用的函數

串列變數(List) 串列變數的元素可以是不同長度、不同變數種類,可以是數值、文字、向量、矩陣、陣列、因子、資料框架,甚至是另一個串列 可用數字指標系統,也可使用串列變數$名稱指標來找尋個別元素 可利用names或attributes函數查看串列變數的名稱指標,很多函數的傳回值都是用串列變數 list(元素名稱1=元素值1,元素名稱2=元素值2,元素名稱3=元素值3,…)

串列變數常用的函數

資料框架變數(Data-Frame) 資料框架變數是用來儲存一個資料檔所有的變數與觀察值,各個行向量長度必須相等,同一個行向量的需為相同屬性,類似Excel的工作表 資料框架變數常用的函數: data.frame() 、edit : 建立資料框架變數 edit、fix : 編輯資料框架變數 names與colnames : 設定或查詢直行名稱 rownames與row.names: 設定或查詢橫列名稱 X=read.table(“data.txt”) : 讀入外部資料檔

讀入與使用資料框架變數

使用資料框架變數的註解 mydata=read.table(file=“c:\\r\\data.txt”, col.names=c(“name”,”age”,”sex”)) 檔案中有變數名稱,加上header=T,檔案中沒有變數名稱,也沒有用col.names設定,則預設為V1,V2… mydata[2]、mydata[” V2”]: 傳回值是框架變數 mydata$V2、mydata[,2]、mydata[,”V2”] : 傳回值是向量

寫出與編輯資料框架變數

時間數列變數(Time-Series) ts是處理時間數列資料變數的函數,時間數列的迴歸函數,如ar或arima函數採用ts變數 基本語法 ts(x,start,end,frequency), x可以是向量、陣列或矩陣,end可省略,start=c(t1,t2),t1是第一個時間單位的起點,t2是第二個時間單位的起點,如start=c(2012,3),可搭配freq=4季 或12 月或365天

時間數列變數的函數

練習:小迴圈 iris 4個數值欄位的平均和標準差 wdbc 30個數值欄位的平均和標準差 輸出顯示: cat(字串或變數,字串或變數…,file= “ “,sep=“ “,append=FALSE) for (i in 1:4) { ……..iris[, i] }

使用迴圈 wdbc=read.table("d:\\stella\\R\\wdbc.txt", header=T,sep=",") sink("d:\\stella\\R\\out.txt") attach(wdbc) # do not need wdbc$c1 for (i in 3:32) { cat("c",i-2,"mean=",round(mean(wdbc[,i]),2), "\tc1 std=",round(sd(wdbc[ ,i]),2),"\n") } sink()

文字資料的輸入輸出、R套件的使用、讀取Excel資料檔、存取R軟體的二進位資料檔

資料輸入檔案格式 read.table: 空格分隔的格式檔案 read.csv: 逗號分隔的格式檔案 read.delim: TAB鍵分隔的格式檔案 read.fwf: 固定寬度的格式檔案

資料輸入輸出範例

R軟體已安裝的套件

或直接 >install.packages(“car”) 安裝R套件car 或直接 >install.packages(“car”)

載入R套件car *只要安裝1次,每次要用時載入即可 >install.packages(“car”) >library(car) *查詢檢視 >library()檢視已安裝的套件 >search()檢視已載入的套件

讀取Excel檔(readxl套件)

存取Excel資料檔(需xlsx套件)

存取R軟體的二進位資料檔 R軟體本身提供二進位的資料檔格式(.rda或Rdata) ,方便使用者儲存操作過程中的物件,包含自訂函數、變數等 getwd(“d:\\stella”) 目前工作區目錄 setwd(“d:\\stella”) 設定工作區目錄 ls() 顯示工作區所有物件 rm(list=ls()) 清除工作區所有物件 save(x,y,myfunc,file=“c:/r/mydata.rda”) save.image(“c:/r/alldata.rda”) load(“c:/r/mydata.rda”)

重新編碼、資料排序、資料合併、資料篩選、字串處理、資料格式轉換、遺漏值處理 四.R的資料處理 重新編碼、資料排序、資料合併、資料篩選、字串處理、資料格式轉換、遺漏值處理

重新編碼的方法 使用邏輯判斷式:TRUE為1,FALSE為0 使用ifelse函數:ifelse(邏輯判斷式,TRUE傳回值,FALSE傳回值) 使用cut()函數 使用recode()函數

重新編碼(邏輯判斷式和ifelse函數) ifelse(邏輯判斷式,TRUE傳回值,FALSE傳回值) >newgroup=ifelse(income>=60000,”RICH”,”POOR”)

cut()函數 cut(x,breaks,labels,right=T, include.lowest=F) breaks為切割點資訊,若為整數k表分割成均等的k組 labels為切割後的各組名稱,若無此項則傳回數字向量 include.lowest=F表示不含各區間的最小值 right=T表示各區間左端open右端closed

car套件的recode函數 設定重新編碼規則的字串,以分號分隔編碼 規則,規定如下: 舊碼=新碼 例如: 0=NA 舊碼向量=新碼 例如: c(7,8,9)=“high” start:end=新碼 例如: 7:9=‘C’或lo:10=1或11:hi=2 else=新碼 例如: else=NA

重新編碼(cut函數和recode函數)

資料的排序 sort(X,decreasing=FALSE): 從小排到大或從大排到小 rank(X): 各元素的排序等級 order(X): 先將元素由小到大排好,再傳回其在原向量的數字指標 rev(X): 將整個向量倒過來排 整個資料檔排序: >iris[order(Sepal.Length),]

資料的排序

資料的合併 垂直合併(rbind函數): 兩個框架變數具相同的欄位,但不含相同橫列資料 水平合併(merge函數):兩個框架變數具有大致相同的橫列資料,但除了主鍵以外具有不同的欄位資料 merge(x,y,by=“id”)顯示x y交集的資料 merge(x,y,by=“id”, all=T)顯示x y聯集的資料 merge(x,y,by=“id”,all.x=T)顯示x各筆資料 merge(x,y,by=“id”,all.y=T)顯示y各筆資料

資料的合併

資料篩選的方法 使用split函數篩選資料 使用指標篩選資料 使用sample函數隨機篩選資料 使用邏輯值篩選資料 使用subset函數篩選資料

使用split函數篩選資料

使用指標篩選資料 列的篩選 iris2=iris[10:12,] iris2=iris[-(10:12),] 欄的篩選 iris2=iris[,5]或iris[,”Species”] iris2=iris[,-5]或iris[,1:4] 欄列的篩選 iris2=iris[51:100,c(1,2,5)] iris2=iris[iris$Species==“setosa,]

sample函數和邏輯值篩選資料 *隨機取樣 抽出不放回 *間隔取樣 每10筆取1 >babies[ seq(1,nrow(babies),10), ] or >babies[as.numeric(rownames(babies) )%% 10==0,]

使用subset函數篩選資料

字串處理函數 字串黏貼: paste(…, sep=“ “) 訊息顯示: cat(字串或變數,字串或變數…,file= “ “,sep=“ “,append=FALSE) 取子字串: substr(x,start,stop) 取代子字串: sub(old,new,x) 取代所有子字串: gsub(old,new,x) 字串切割: strsplit(x, “ “) 找尋子字串:grep(子字串,x,ignore.case=FALSE)

字串處理函數範例

正規表示式擷取關鍵字 grep(pattern, x, ignore=F) ^表子字串出現在x最前面 $表子字串出現在x最前面 A-F 包含A B C D EF [ABC]將特定規則群集起來 A或B或C [^ABC]A或B或C以外 ?regex查詢

擷取關鍵字範例

資料格式轉換(long-wide format) #stack and unstack (chicken=read.table("d:\\stella\\R\\test.csv",sep=",",header=T)) chicken=chicken[,-1] (chicken2=stack(chicken)) #names(chicken2)=c("weight","feed") (chicken3=unstack(chicken2)) #reshape long and wide format chicken=read.table("d:\\stella\\R\\test.csv",sep=",",header=T) chicklong=reshape(chicken,direction="long",varying=list(c("Ration1","Ration2","Ration3")),v.names="ration", idvar="id") chicklong chickwide=reshape(chicklong,direction="wide", idvar="id") chickwide

stack函數

unstack函數

reshape函數

綜合應用:水平合併或取聯集

綜合應用: 水平合併或取聯集 # method 1 : horizontal merge test=read.table("D:\\stella\\R\\input3.txt", header=T) t0=test[,1:4] t1=test[grep("tea",test$item1,ignore.case=FALSE),c(1,5)] t2=test[grep("tea",test$item2,ignore.case=FALSE),c(1,6)] tt=merge(t1,t2,by="id",all=T) (hall=merge(t0,tt,by="id",all.tt=T)) #method 2 : horizontal merge l1=grep("tea",test[,5]) l2=grep("tea",test[,6]) t=test[union(l1,l2) ,] t[order(t$id),]

練習:有遺漏值的babies資料檔 資料的筆數計有1236筆,共有7個欄位(bwt:嬰兒體重, gestation:懷孕日數, parity:胎序,懷孕過幾胎, age:母親年齡, height :母親身高, weight :母親體重, smoke:母親抽煙與否,1表抽煙0表不抽煙) summary(babies) nrow(babies) mean(babies$gestation,na.rm=T) babies[babies$age<18 & !is.na(babies$age),] babies=na.exclude(babies)

練習:wdbc分組平均數 wdbc=read.table("d:\\stella\\wdbc.txt", header=T,sep=",") attach(wdbc) for (i in 3:32) { cat(paste(“c”,i-2,sep=“”),“total mean=”, round(mean(wdbc[,i]),4),"\n") cat(“B mean=”, round(mean(wdbc[diagnosis=="B",i]),4),"\n") cat(“M mean=”, round(mean(wdbc[diagnosis=="M",i]),4),"\n") }