輸入資料的第一個步驟,首先要知道資料存放的位置與路徑,以方便儲存/開啟資料。R 利用 getwd() 以及 setwd() 兩個函數來決定資料存取的資料夾目錄。
設定工作資料夾
getwd是get working directory的縮寫。透過 getwd() 可以顯示目前預設的工作資料夾。
> getwd() #顯示預設工作資料夾
[1] "C:/Users/USER/Documents"
setwd就是set working directory的縮寫。 setwd() 函數可以更改預設資料夾,例如把預設資料夾改為桌面:
> setwd("C:\Users\USER\Desktop") #預設資料夾改為桌面
用 getwd() 再次確認預設資料夾已改為桌面:
> getwd()
[1] "C:/Users/USER/Desktop"
dir() 函數可以檢視預設資料夾中的所有檔案。
> dir() #顯示桌面所有檔案
輸入資料
資料編輯器
習慣視覺化編輯的人,可用 edit() 函數呼叫資料編輯器(Data Editor),就可以像在SPSS或EXCEL一樣輸入或修改資料。以輸入班級內學生的身高為例:
> class<-data.frame(name=character(0), gender=character(0), height=numeric(0)) #宣告class為資料集,並指定姓名、性別與身高三個變數的資料類型
> 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 與多數程式語言都是物件導向。利用 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() 之外,當然也可以透過 c() 建立向量的方式輸入資料:
> 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
