R有專屬的檔案格式RData,任何資料匯入後存檔、瀏覽檢視資料是分析的第一步。以customer.csv為範例,介紹存檔與檢視資料的方法。
存檔 / 開啟舊檔 / 匯出
save()、load()兩個指令,可以將檔案儲存為R專屬的資料格式RData,以便往後直接用R開啟舊檔。
> library(foreign)
> data<-read.csv("c:/Users/USER/downloads/customer.csv", header=T, sep=",") #匯入csv
> save(data, file="c:/Users/USER/downloads/data.RData") #將data存放在downloads資料夾並轉存為RData格式
存檔完成後,可以看到downloads已經出現data.RData。要再開啟舊檔,只要呼叫load()指令即可:
> load(file="c:/Users/USER/downloads/data.RData")
如果要將RData匯出為其他格式,可以透過write.table()完成。以data.RData為例,將檔案轉換為csv。本例中將檔案轉換為data.csv。
> write.table(data, file="c:/Users/USER/downloads/data.csv")
瀏覽與排序
瀏覽資料是key-in完成後的第一步驟,目的是初略掌握資料的概觀,以及檢查有沒有異常的資料,可能來自於key-in錯誤。
這項工作通常可以透過table()與summary()兩個指令來完成。table()可以呼叫次數分配表,summary()則可以顯示基本的描述統計摘要。
> class<-data.frame(name=character(0), gender=character(0), height=numeric(0))
> 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
> table(class$gender) #產生gender次數分配表
F M
5 5
> summary(class$height) #產生height基本統計量
Min. 1st Qu. Median Mean 3rd Qu. Max.
156.0 162.0 169.0 169.5 173.2 188.0
order()可以將資料由大到小排序。例如以order()來針對height排序可以發現第4位Sarah的身高最矮,是第2位Kevin最高。
> order(class$height, decreasing=FALSE) #升冪排列
[1] 4 6 8 1 9 5 7 10 3 2
> order(class$height, decreasing=TRUE) #降冪排列
[1] 2 3 10 7 5 1 9 8 6 4
> class[order(class$height, decreasing=TRUE),]
name gender height
2 Kevin M 188
3 Lewis M 182
10 Bruce M 174
7 Anne F 171
5 George M 170
1 Ariel F 168
9 Roger M 168
8 Emma F 160
6 Linda F 158
4 Sarah F 156
資料結構
str()可以顯示資料結構。例如class包含10筆觀察值、3個變數,其中name、gender是類別變數(factor),height是數字變數(numeric):
> str(class)
'data.frame': 10 obs. of 3 variables:
$ name : Factor w/ 10 levels "Ariel","Kevin",..: 1 2 3 4 5 6 7 8 9 10
$ gender: Factor w/ 2 levels "F","M": 1 2 2 1 2 1 1 1 2 2
$ height: num 168 188 182 156 170 158 171 160 168 174
資料附加與移除
在R指令中一定要以「$」指定變數在哪一個data.frame,否則R會出現無法判斷找不到要分析哪一個變數的情況。這其實是一種防呆機制,因為一旦資料多的時候,不同檔案中可能有相同變數名稱,沒有指定的話會很容易出錯。
不過每次都要輸入「$」也帶來一些不便,其實只要將檔案附加到R的搜尋路徑中,R就可以自動搜尋檔案中的所有變數,就不必再一一輸入「$」。
> attach(class)
> table(gender)
F M
5 5
要確認檔案有沒有在R的搜尋路徑,可以用search()指令:
> search()
[1] ".GlobalEnv" "class" "package:stats"
[4] "package:graphics" "package:grDevices" "package:utils"
[7] "package:datasets" "package:methods" "Autoloads"
[10] "package:base"
移除只要使用detach()即可:
> detach(class)