• 沒有找到結果。

讀存取 R 資料檔或外部資料檔

在文檔中 R data (頁 25-32)

讀存取 R軟體的資料格式:rda 檔 載入 R 資料檔load("le.rda")

將物件儲存 rdata: save.image("le.rda")

使用資料框架函式 read.table() 或 read. sv() 讀入或輸入外部資料檔案, 最容易。 直接讀取整個 外部檔案進入資料框架, 外部檔案常常要求有特定的格式, 例如

1. ASCII 形式的檔案,多數檔編輯器, 資料庫, 試算表等軟體可以存取

2. 第一的列 () (line, row) 可以有該資料各個變數的變數名稱 (variablenames) 或是 â列的 名字 ( olumnname)

3. 其餘的列(line, row), 是各個變數的值.

4. 資料之間是空格分開, 或其他特定符號 (逗號,Tab) 分隔.

5. 資料是文字類型, 通常以雙引號" 形式

6. 以 â,â分開變數值的 ASCII 形式檔案, 一般成為 omma-separated-variableformat, 檔案名 通常以 . sv 作為延伸檔名,

7. 第一欄 ( olumn) 有時候是 â列標籤 (rowlabel)或是 â列的名字 (rowname) 讀取資料檔技巧:

1. 在你要讀入 R語言前務必先看過資料檔格式,再決定用哪種命令函數讀取資料檔。

2. 注意資料是否有 「欄位名稱」, 分隔符號是什麼?

3. 要注意輸入的符號是前斜線"

/

 還是後斜線 "

\



4. 在你的作業系統中資料可否利用"複製 Ctrl

+

C,"張貼Ctrl

+

V 功能,如果可以的話,

s an() 指令是個不錯的選擇 。

資料或分析結果,輸出至外部檔案, 供其他軟體使用, 主要 使用資料框架函式 write.table(),相對 應read.table(),輸出資料(資料框架或矩陣)至外部資料檔案,最容易. 對大型資料,可以使用MASS 套件中的 write.matrix()會較有效率.

R內建的鳶尾花(iris) 資料集是非常著名的生物資訊資料集之一,取自美國加州大學歐文分校的機 械學習資料庫 http://ar hive.i s.u i.edu/ml/datasets/Iris, 資料的筆數為150, 共有五個欄位:

1. 花萼長度 (Sepal Length): 計算單位是公分。

2. 花萼寬度 (Sepal Width): 計算單位是公分。

3. 花瓣長度 (Petal Length): 計算單位是公分。

4. 花瓣寬度 (Petal Width): 計算單位是公分。

5. 類別 (Class): 可分為Setosa,Versi olor和 Virgini a三個品種。

順伯的窩 第 頁 共 頁

讀取ASCII 表格形式的資料: 利用 read.table 讀檔,write.table 為輸出檔案

read.table(file, header = TRUE, sep = ",", quote = "\"", de = ".",

fill = TRUE, omment. har = "", ...)# 讀取 txt,data資料檔

write.table(x, "myNewData.txt",append=FAL SE, quote=FALSE, sep="\t")#匯出txt 資料檔

write.table() 可以匯出資料成為 txt 或是 sv 格式到指定的目錄

read.table適合讀取表格資料,但較不適合讀取大型矩陣資料檔,欲讀取大量矩陣資料可用指令

"s an 取代。

le= 資料名稱

header= 資料開頭是否有變數名稱, 預設值=TRUE

sep = 資料分隔符號, 如果是sep=" ", 表示分隔為空白鍵或 Tab("\t'') 做區隔

quote = 資料中的字串符號,quote=" "代表關閉此功能

de = 資料是否含小數點或分號。â.â為實數的小數點。

ll= 每一列資料長度是否不同, 預設值=TRUE

omment. har = 預設值" "代表關閉 omment

row.names = NULL 表示第一欄無列標籤

append= 首列header line預設值為 False

資料檔變數之間為 "  空白分隔或 Tab分隔的 le.txt

sepal_length sepal_width petal_length petal_width iris 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa

資料檔變數之間為 ", 分隔的 le.txtle. sv

sepal length,sepal width,petal length,petal width,iris 5.1,3.5,1.4,0.2,Iris-setosa

4.9,3,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa 4.6,3.1,1.5,0.2,Iris-setosa 5,3.6,1.4,0.2,Iris-setosa

順伯的窩 第 頁 共 頁

read.table("d:/math work/data/iris.txt",sep=" ",he ader =T,s kip= 0) #空白

read.table("d:/math work/data/iris_tab.txt",s ep=" \t", head er=T ,ski p=0 )#Ta b 隔

read.table("d:/math work/data/iris_ sv.txt",s ep=" ,",h eade r=T, skip =0) #逗號

read.table("d:/math work/data/iris.data",sep= ",") #逗號

write.table(x,"d:/myNewDa ta.t xt", appe nd=F ALSE ,quo te=F ALSE ,sep ="," )#匯出資料

write.table(x,"myNewData. sv" ,sep ="," ,row .nam es = FALSE) # 匯出 sv 資料檔 讀取檔案較大的 sv 資料: 若格式檔為. sv, 變數間以sep=", 做區隔則用指令read. sv() 來讀取資

read. sv(file,header = TRUE, sep = ",", quote = "\"",de = ".",

fill = TRUE, omment. har = "", ...)#讀取 le. sv 資料檔

write. sv(x,"myNewData. s v",r ow.n ames = FALSE)# 匯出 sv 資料檔

相當於 write.table(x,"myNewData. s v",s ep=" ,",r ow.n ames = FALSE)# 匯出 sv 資 料檔

執行write. sv() 時,不需要指定分隔的符號,在重新讀取時,也不需要刻意指定,仍然可以匯入

正確的資料。

read. sv("d:/math work/data/iris. sv",header =T,s kip= 0)

讀取向量資料檔 s an(): s an() 可以讀取向量型態的外部資料, 但是無法讀取表格, 是一個處理簡 單資料的指令。 適合矩陣形式資料(同屬性)

s an(file="",what=double( ),nm ax=- 1,n= -1,s ep=" ",de =". ",sk ip=0 , om men t. h ar=" ",.. .)

tips: 若可以將要輸入的資料 Ctrl+C 複製好, 則在 RStudio 作業平台輸入 >x=s an() 再

Crtl+V 貼上資料即可。

le: 資料檔案位址路徑名稱

what =double() 資料兩倍精密度

nmax 設定最多讀入多少個數值,-1 表無限制。

n 設定讀入多少個數值。-1表無限制。

sep = 資料之間分隔符號, 如果是 sep=" ", 表示分隔為空白鍵或 Tab("\t'') 做區隔。

預設為空格或換行符號。

de = 資料是否含小數點或分號。

skip= 前幾列資料不讀入。

omment. har = 預設值" "代表關閉 omment

順伯的窩 第 頁 共 頁

資料檔 ex1.txt 如右:

Error in s an("d:/math work/data/ex1.txt", skip = 0) :

s an() expe ted 'a real', got '年齡'

x=s an("d:/math work/data/ex1.txt",sep=",", skip =1)

x=s an("d:/math work/data/ex1",sep="\t",ski p=1)

順伯的窩 第 頁 共 頁

下載安裝套件: install.pa kages("pa kage")

R 軟體安裝後, 安裝目錄會有基本套件 (Pa kages)。 若欲使用非基本套件中的某函數功能, 必 須先在程式中使用 library()函數來載入套件。 基本套件 (無須載入):

1. datasets: 基本範例資料檔 (Iris)

2. grDevi xs: 圖形裝置套件

3. graphi s基本圖形套件

4. grid:grid圖形版面設定套件

5. method:R 物件使用方法及類別

6. stats: 統計函數套件

7. stats4: 使用 S4 lass 物件導向方式所寫的統計套件

8. t ltk: 與 T l/Tk 圖形介面語言溝通的工具套件

9. tools: 管理與程式開發有關的工具套件

10. utils: 其他常用工具函數

Windows GUI圖形介面中, 可從

p

程式套件

y ⇒ p

安裝程式套件

y

選單執行套件安裝。R

軟體會要求選擇儲存 R 軟體的 CRAN 鏡射網站位置, "Taiwan(Taipeh), 再選擇自己要安裝 的套件名稱,R 軟體即會從 CRAN 鏡射網站抓取相關的套件安裝在電腦之中。 我們也可以自行 從作業系統中安裝非基本套件, 語法為install.pa kages("pa kage") 只需安裝一次就行。

有用的套件 (Pa kage)

1. gdata 套件:讀存取外部資料檔工具

2. splines 套件: 回歸分析線性函數及類別功能

3. mosai 套件:統計與數學工具

4. rootSolve 套件:求方程式近似根, 微分方程式

5. dplyr套件: 處理數據資料時, 基本數據套件。 特別適用於按類別資料數據。

6. ggplot2: 用於製作漂亮圖形的著名包裝。 ggplot2允許您使用圖形語法來構建分層的,

自定義的繪圖。

7. ggmap: 直接從 Google 地圖下載街道地圖, 並將其用作 ggplots 中的背景。(For Spatial

data)

8. MLR:Python 在 R 之前飆升的最大原因之一是它的機器學習重點庫 (如 s ikit-learn),

然後 MLR, 它允許我們執行各種機器學習任務。 MLR 包括我們在項目中使用的所有 流行的機器學習算法。

9.

· · ·

查詢已載入套件:library() 查看自己電腦內已安裝哪些套件

載入套件:R 軟體中每次執行非基本安裝套件 (Pa kage) 時需載入, 使用 library("pa kage") 來 載入套件

讀取Ex el 檔: 最穩定的辦法還是轉成 sv,利用read.table()讀入資料。 要讀取Mi rosoftEx el 資料首先必須載入套件 "gdata。

install.pa kages("gdata",repos="http:// ran.us.r-proje t.org")

順伯的窩 第 頁 共 頁

library(gdata);read.xls("ex elle.xls",sheet = 1,header =TRUE)

若資料儲存為 Mi rosoft Ex el

>install.pa kages("gdata" ,rep os=" http :// ran. us.r -pro je t .org ") #首次 安裝套件後, 重新執行 R-studio

>library(gdata)

>x=read.xls("d:/math work/data/Iris.xls") # 2007 年後 Mi rosoft Ex el 檔 則為 "iris.xlsx''

> x

sepal.length sepal.width petal.length petal.width iris

1 5.1 3.5 1.4 0.2 Iris-setosa

2 4.9 3.0 1.4 0.2 Iris-setosa

3 4.7 3.2 1.3 0.2 Iris-setosa

4 4.6 3.1 1.5 0.2 Iris-setosa

5 5.0 3.6 1.4 0.2 Iris-setosa

注意資料儲存之編碼為 Big5Utf-8ANCI 或其它。 重新儲存資料檔、 編碼為Utf-8。 使用合適 的編碼參數: read.table(âdata.txtâ, en oding="an i") read.table("test.utf8", sep = ",", header=TRUE, leEn oding ="UTF-8")

library(): 查詢電腦已安裝可用的套件名稱

data(): 查詢可用的資料檔名稱

R語言基本安裝後包含幾個基本的資料檔可供利用,"AirPassengers," ars,"faithful,"iris,"trees

,

· · ·

等。 如欲進一步查詢資料檔的說明可用 help(dataname) 指令查看。

>data(iris) # 引入"iris 資料檔

>help(iris) # 查看 "iris 資料檔的說明 (資料來源, 格式,變數,...)

1.4練習題

1. 通常的數據讀取函數之一採用以下參數:header,sep,de ,row.names,skip,nrows。 解釋他們的目 的。

2. 讀入資料檔 "possum. sv ,並查看有哪些變數? 如何查看 "sexf 的"totlngth 變數資料

3. 比較指令函數 s an()與 read.table()兩者差異?

順伯的窩 第 頁 共 頁

4. 說明如何從 Ex el 電子檔表格輸入數據資料?

5. 從網址 http://www.biostatisti ien .eu/ spri ngeR /Wei ght_ birt h.xl s 下載資料檔

"Weight_birth.xls`` 然後讀入 R軟體,並命名為 x 物件資料。

順伯的窩 第 頁 共 頁

在文檔中 R data (頁 25-32)

相關文件