輸入資料的第一個步驟,首先要知道資料存放的路徑,以方便儲存/開啟資料。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
當然,也可以事先不指定變數名稱,直接呼叫變數編輯器設定變數名稱與資料型態,這樣語法會更加簡潔:
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