lecture
website icon
輸入資料
×
website icon 資料管理 統計分析 相關資源 巨人肩膀 語法索引 關於作者

簡介

本部分介紹如何在R的環境中設定存檔路徑、輸入資料,使用到的指令包含:

Facebook Icon Twitter Icon LinkedIn Icon LINE Icon

輸入資料的第一個步驟,首先要知道資料存放的路徑,以方便儲存/開啟資料。R利用getwd()以及setwd()兩個指令來決定資料存放的位置。

設定工作資料夾

getwd是get working directory的縮寫。透過getwd()指令,可以顯示目前預設工作資料夾。

> getwd() #顯示預設工作資料夾
[1] "C:/Users/USER/Documents"

如果想修改預設資料夾,可以透過setwd()指令來完成。想當然爾,setwd就是set working directory的縮寫。

例如把工作資料夾改為桌面:

> setwd("C:\Users\USER\Desktop") #預設資料夾改為桌面

設定完成後,可以用getwd()來再次確認,確定預設資料夾已改為桌面:

> getwd()
[1] "C:/Users/USER/Desktop"

要檢視預設資料夾中的檔案,可以透過dir()指令來執行。

> dir() #顯示桌面所有檔案

輸入資料

資料編輯器

R保持了簡潔的資料輸入形式,透過edit()指令呼叫資料編輯器(Data Editor),就可以像在SPSS或EXCEL一樣輸入或修改資料。

以一個班級內學生的身高為例:

> class<-data.frame(name=character(0), gender=character(0), height=numeric(0)) #宣告class資料型態為dataframe,同時指定姓名、性別與身高三個變數
> class<-edit(class) #開啟資料編輯器
> class #顯示資料內容
     name gender height
1   Ariel      F    168
2   Kevin      M    188
3   Lewis      M    182
4   Sarah      F    156
5  George      M    170
6   Linda      F    158
7    Anne      F    171
8    Emma      F    160
9   Roger      M    168
10  Bruce      M    174
dataeditor

當然,也可以事先不指定變數名稱,直接呼叫變數編輯器設定變數名稱與資料型態,這樣語法會更加簡潔:

> class<-data.frame()
> class<-edit(class)
variable editor

R Console

scan()指令除了讀取資料外,也可以輸入資料。

scan()預設只能輸入數字資料,如果要輸入字串,則必須搭配what屬性:

> name<-scan(what="") #輸入10位同學的姓名
1: Ariel 2: Kevin 3: Lewis 4: Sarah 5: George 6: Linda 7: Anne 8: Emma 9: Roger 10: Bruce 11:
Read 10 items
> name #顯示輸入結果
 [1] "Ariel"  "Kevin"  "Lewis"  "Sarah"  "George" "Linda"  "Anne"   "Emma" 
 [9] "Roger"  "Bruce" 

再次以scan()搭配what屬性輸入性別:

> gender<-scan(what="") #輸入10位同學的性別
1: F 2: M 3: M 4: F 5: M 6: F 7: F 8: F 9: M 10: M 11:
Read 10 items
> gender #顯示輸入結果
 [1] "F" "M" "M" "F" "M" "F" "F" "F" "M" "M" 

輸入身高:

> height<-scan() #輸入10位同學的身高
1: 168 2: 188 3: 182 4: 156 5: 170 6: 158 7: 171 8: 160 9: 168 10: 174 11:
Read 10 items
> height #顯示輸入結果
 [1] 168 188 182 156 170 158 171 160 168 174 

R與VB一樣都是物件導向。利用scan()指令創造name、gender、height三個物件後,可以利用data.frame()指令,將資料轉換為資料集:

> class<-data.frame(name, gender, height) #將三個物件轉換為資料集
> class #顯示結果
     name gender height
1   Ariel      F    168
2   Kevin      M    188
3   Lewis      M    182
4   Sarah      F    156
5  George      M    170
6   Linda      F    158
7    Anne      F    171
8    Emma      F    160
9   Roger      M    168
10  Bruce      M    174

除了scan()之外,也可以透過宣告向量的方式輸入資料:

> gender<-c(1,1,2,2)
> english<-c(90,96,97,89)
> math<-c(89,90,88,93)
> class<-data.frame(gender,english,math)

修改資料

萬一發現資料輸入有誤,只需利用fix()指令就可開啟編輯視窗修改:

> fix(class)

除此之外,也可以透過指定欄位的方式,修改資料。例如將Bruce的身高從174改為184,我們指定第10列、第3欄:

> class[10, 3]<-184

欄位的部分也可以用變數名稱來替代:

> class[10, "height"]<-184