lecture
website icon
命名編碼
資料檢視 命名編碼 新增變數 資料合併 資料篩選 遺漏值 資料加權
×
website icon 資料管理 統計分析 相關資源 巨人肩膀 語法索引 關於作者

簡介

本部分介紹如何編碼、替變數取名字,使用到的函數包含:

編碼是統計分析的基礎工作,正確編碼有助降低人為誤差,提高分析準確率。這裡繼續用世界棒球經典賽wbc.csv當範例,來示範 R 如何替變數命名與編碼。

註解

變數命名有時候過於簡化,無法第一眼判斷變數的內容,可以利用 comment() 對變數或檔案下註解,提供更詳細的描述。

對class下註解:

> Team_Taiwan<-read.csv("c:/Users/USER/downloads/wbc.csv", header=T, sep=",")
> comment(Team_Taiwan)<-"2026世界棒球經典賽台灣隊名單"
> comment(Team_Taiwan)
[1] "2026世界棒球經典賽台灣隊名單"

對Team_Taiwan的變數新增註解:

> comment(Team_Taiwan$PLAYER)<-"球員"
> comment(Team_Taiwan$PS)<-"守備"
> comment(Team_Taiwan$G)<-"出賽"
> comment(Team_Taiwan$H)<-"安打"
> comment(Team_Taiwan$AB)<-"打數"
> comment(Team_Taiwan$PA)<-"打席"
> comment(Team_Taiwan$HR)<-"全壘打"
> comment(Team_Taiwan$RBI)<-"打點"
> comment(Team_Taiwan$BB)<-"保送"
> comment(Team_Taiwan$SO)<-"三振"
> comment(Team_Taiwan$SB)<-"盜壘"
> comment(Team_Taiwan$OBP)<-"上壘率"

註解新增完畢後,用 str() 函數查看可以發現 R 在每個變數的後面都附註了稍早新增的中文註解:

> str(Team_Taiwan)
'data.frame':   14 obs. of  12 variables:
 $ PLAYER: chr  "鄭宗哲" "Fairchild" "張育成" "林家正" ...
  ..- attr(*, "comment")= chr "球員"
 $ PS    : chr  "IF" "OF" "IF" "C" ...
  ..- attr(*, "comment")= chr "守備"
 $ G     : int  4 4 4 4 2 4 4 4 4 3 ...
  ..- attr(*, "comment")= chr "出賽"
 $ H     : int  3 3 6 1 0 3 1 2 2 0 ...
  ..- attr(*, "comment")= chr "安打"
 $ AB    : int  9 12 15 7 1 13 9 12 11 6 ...
  ..- attr(*, "comment")= chr "打數"
 $ PA    : int  15 16 16 10 3 15 12 14 11 7 ...
  ..- attr(*, "comment")= chr "打席"
 $ HR    : int  1 2 1 0 0 0 0 0 0 0 ...
  ..- attr(*, "comment")= chr "全壘打"
 $ RBI   : int  2 6 5 0 0 3 0 2 0 0 ...
  ..- attr(*, "comment")= chr "打點"
 $ BB    : int  5 4 1 1 1 1 2 1 0 1 ...
  ..- attr(*, "comment")= chr "保送"
 $ SO    : int  1 5 2 1 0 3 4 2 3 4 ...
  ..- attr(*, "comment")= chr "三振"
 $ SB    : int  4 3 0 0 0 2 0 1 0 0 ...
  ..- attr(*, "comment")= chr "盜壘"
 $ OBP   : num  0.571 0.438 0.438 0.4 0.667 0.267 0.333 0.231 0.182 0.143 ...
 ..- attr(*, "comment")= chr "上壘率"
 - attr(*, "comment")= chr "2026世界棒球經典賽台灣隊名單"

編碼

統計分析通常需要將字串類型的資料賦予「數字化」的代碼,也就是所謂的編碼。這項工作可以用 levels() 函數來完成。現在試著將守備位置PS編碼為捕手C=0、內野手IF=1;外野手OF=2:

> attach(Team_Taiwan)
> PS<-factor(PS) #將字串資料轉換為因子
> levels(PS)[levels(PS)=="C"]<-0
> levels(PS)[levels(PS)=="IF"]<-1
> levels(PS)[levels(PS)=="OF"]<-2
> table(PS)
PS
0 1 2
3 6 5

標籤

標籤是指賦予「數字化」後的變數可供辨識的名稱。透過 factor() 搭配 levels() 可以進行標籤化。現在試著將0、1、2編碼標籤化為Catcher、Infielder、Outfielder:

> PS<-factor(PS, levels=c(0,1,2), labels=c("Catcher","Infielder","Outfielder"))
> table(PS)
PS
   Catcher  Infielder Outfielder
         3          6          5

如果變數的數值具有高低順序,例如安打數,也可以用ordered()搭配levels()賦予變數標籤名稱。例如把0-1支安打記為打擊低迷、2-4支安打記為打擊平穩、5支安打以上記為打擊火熱。

> H<-ordered(H, levels=c(3,3,6,1,0,3,1,2,2,0,1,0,0,0),
+ labels=c("平穩","平穩","火熱","低迷","低迷","平穩","低迷","平穩","平穩","低迷","低迷","低迷","低迷","低迷")
+ )
> table(H)
H
平穩 火熱 低迷
   5    1    8