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

簡介

本部分介紹如何設定存檔路徑、輸入資料,使用到的函數包含:

輸入資料的第一個步驟,首先要知道資料存放的位置與路徑,以方便儲存/開啟資料。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
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 與多數程式語言都是物件導向。利用 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