本部分持續以2026年世界棒球經典賽台灣隊的資料wbc.csv為範例,介紹 R 存檔與檢視資料的方法。
存檔 / 開啟舊檔 / 匯出
RData是 R 專屬的檔案格式。save() 、 load() 可以將檔案儲存為*.RData格式,以便往後直接開啟舊檔。
> Team_Taiwan<-read.csv("c:/Users/USER/downloads/wbc.csv", header=T, sep=",") #匯入csv
> save(Team_Taiwan, file="c:/Users/USER/downloads/wbc.RData") #將檔案轉存為*.RData格式並指定存放路徑
存檔完成後,可以看到downloads資料夾已經出現wbc.RData。要開啟舊檔,只要呼叫 load() 函數輸入檔案所在路徑即可。不過要注意的是, R 開啟的是*.RData裡面的物件,並不是存檔的檔名。
> load(file="c:/Users/USER/downloads/wbc.RData")
> wbc #輸入檔名會顯示找不到物件
錯誤: 找不到物件 'wbc'
> ls()
[1] "Team_Taiwan" #載入的是wbc.RData裡的Team_Taiwan物件
R 的內建函數 write.table() 具有把資料匯出成*.csv或*.txt文字檔的功能。例如再將檔案轉換為Team_Taiwan.txt。如果要匯出成SPSS、SAS等統計軟體格式,則建議使用 haven 套件中的 write_sav() 、 write_xpt() 、 write_dta()函數。
> write.table(Team_Taiwan, file="c:/Users/USER/downloads/Team_Taiwan.txt")
瀏覽與排序
瀏覽資料的目的是初略掌握資料概觀,檢查資料有無異常,確定資料都有正確輸入與讀取。這項工作可以透過 table() 與 summary() 兩個函數來完成。 table() 可以呼叫次數分配表, summary() 則可以顯示基本的描述統計摘要。
> table(Team_Taiwan$PS) #產生守備位置次數分配表
C IF OF
3 6 5
> summary(Team_Taiwan$H) #產生安打統計量
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.000 0.000 1.000 1.571 2.750 6.000
order() 可以將資料排序。例如以 order() 來對安打排序可以發現第三位選手張育成的安打數最多。
> order(Team_Taiwan$H, decreasing=FALSE) #升冪排列
[1] 5 10 12 13 14 4 7 11 8 9 1 2 6 3
> order(Team_Taiwan$H, decreasing=TRUE) #降冪排列
[1] 3 1 2 6 8 9 4 7 11 5 10 12 13 14
> Team_Taiwan[order(Team_Taiwan$H, decreasing=TRUE),]
PLAYER PS G H AB PA HR RBI BB SO SB OBP
3 張育成 IF 4 6 15 16 1 5 1 2 0 0.438
1 鄭宗哲 IF 4 3 9 15 1 2 5 1 4 0.571
2 Fairchild OF 4 3 12 16 2 6 4 5 3 0.438
6 陳晨威 OF 4 3 13 15 0 3 1 3 2 0.267
8 江坤宇 IF 4 2 12 14 0 2 1 2 1 0.231
9 吳念庭 IF 4 2 11 11 0 0 0 3 0 0.182
4 林家正 C 4 1 7 10 0 0 1 1 0 0.400
7 吉力吉撈 C 4 1 9 12 0 0 2 4 0 0.333
11 林安可 OF 4 1 15 15 0 0 0 4 0 0.067
5 陳傑憲 OF 2 0 1 3 0 0 1 0 0 0.667
10 宋晟睿 OF 3 0 6 7 0 0 1 4 0 0.143
12 蔣少宏 C 4 0 3 4 0 0 0 1 0 0.000
13 林子偉 IF 1 0 3 3 0 0 0 1 0 0.000
14 張政禹 IF 2 0 2 2 0 0 0 0 0 0.000
物件結構
str() 是 R 中最常用的資料檢視函數之一,可以用來快速查看物件的結構。它不會列出所有資料,而是顯示物件的類型、維度、變數名稱及部分資料內容。例如Team_Taiwan包含14筆觀察值、12個變數,其中PLAYER、PS是字串類型的資料,其餘則是是整數與浮點數:
> str(Team_Taiwan)
'data.frame': 14 obs. of 12 variables:
$ PLAYER: chr "鄭宗哲" "Fairchild" "張育成" "林家正" ...
$ PS : chr "IF" "OF" "IF" "C" ...
$ G : int 4 4 4 4 2 4 4 4 4 3 ...
$ H : int 3 3 6 1 0 3 1 2 2 0 ...
$ AB : int 9 12 15 7 1 13 9 12 11 6 ...
$ PA : int 15 16 16 10 3 15 12 14 11 7 ...
$ HR : int 1 2 1 0 0 0 0 0 0 0 ...
$ RBI : int 2 6 5 0 0 3 0 2 0 0 ...
$ BB : int 5 4 1 1 1 1 2 1 0 1 ...
$ SO : int 1 5 2 1 0 3 4 2 3 4 ...
$ SB : int 4 3 0 0 0 2 0 1 0 0 ...
$ OBP : num 0.571 0.438 0.438 0.4 0.667 0.267 0.333 0.231 0.182 0.143 ...
資料附加與移除
在前面的範例中,要分析某一變數時,會以Team_Taiwan後面加上錢字號$來指定變數。這是因為要明確讓 R 知道變數在哪一個資料集中,否則 R 會無法判斷要分析哪一個變數。這可以看成一種防呆機制,因為一旦資料量多的時候,不同檔案中可能有相同變數名稱,沒有指定的話會很容易出錯。
不過每次都要輸入錢字號$也頗為麻煩,其實只要將檔案附加到 R 的搜尋路徑,就可以直接以變數名稱進行分析,而不必一一輸入$。
> attach(Team_Taiwan)
> table(PS)
PS
C IF OF
3 6 5
要確認檔案有沒有在 R 的搜尋路徑,可以用search()函數:
> search()
[1] ".GlobalEnv" "Team_Taiwan" "package:stats"
[4] "package:graphics" "package:grDevices" "package:utils"
[7] "package:datasets" "package:methods" "Autoloads"
[10] "package:base"
要將檔案自 R 的搜尋路徑移除,只要使用 detach() 函數即可:
> detach(Team_Taiwan)