iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0
AI & Data

語言學與NLP系列 第 5

Day 5 資料型態介紹 前篇

  • 分享至 

  • xImage
  •  

熟悉一個程式語言,非常重要的一點就是了解它的資料型態。在進行語料處理與 NLP 任務時也會遇到各式各樣的資料型態,有時候為了使用特定的模型來訓練資料也會需要把資料轉換成相應的資料型態。因此,-䅰篇就來好好了解一下各種不同的資料型態吧!

在 R 語言中,以下是常見的資料型態

  • integer(整數)
  • number(實數)
  • logic(布林代數)
  • character(字串)
  • factor(類別變數)
  • vector(陣列)
  • list(列表)
  • matrix(矩陣)
  • data frame(資料框)

integer & number

前四項較為單純,與數字相關的就是 integer 和 number,如果要在 R 裡宣告一個數字,方法如下:


a <- 5
b <-2.3

執行之後我們可以使用 str() 這個 function 來檢視資料型態


str(a)
str(b)

執行結果為:
num 5
num 2.3

看到這邊有沒有覺得很奇怪呢?明明 a 是整數,應該要是 integer 啊!?其實這是因為這是因為 R 預設的數字型態是「number」。所以若直接把數字存到變數中,其資料型態是「number」。 那麼,如果想要轉換資料型態,變成 integer 時就要使用as.integer()。以下先轉換資料型態,在使用 str() 檢查。


a = as.integer(a)
b = as.integer(b)

str(a)
str(b)

執行結果為:
int 5
int 2

這邊可以發現因為是轉換成整數,故原本的 2.3 會變成 2
此外,看到這邊想必各位都能夠舉一反三的轉換資料型態了吧!沒錯~轉換的方式就是 as.____這樣的形式,以下列出轉換函式。

  • integer -> as.integer()
  • number -> as.numeric() 看清楚,這邊是 numeric 喔!!!
  • character -> as.character()
  • factor -> as.factor()
  • matrix -> as.matrix()
  • vector -> as.vector()
  • list -> as.list()
  • data frame -> as.data.frame()

除了 str() 可以看資料型態之外,我們也可以使用判斷式來確認資料型態,例如以下 code 所示


a <- as.integer(5)
b <- 2.3

is.integer(a)
is.integer(b)

執行結果為:
[1] TRUE
[1] FALSE

如同 as.____這樣的函式,is.____也是同樣的道理,以下列出判斷函示

  • integer -> is.integer()
  • number -> is.numeric()
  • character -> is.character()
  • factor -> is.factor()
  • matrix -> is.matrix()
  • vector -> is.vector()
  • list -> is.list()
  • data frame -> is.data.frame()

logic

所謂的布林代數(boolean),代表的是 True 和 False,常用於邏輯式上的判斷。在 R 裡面,以logic的資料型態來表示。


a <- TRUE
b <- FALSE
str(a)        #確認 a 的型態
is.integer(b) #判斷 b 是不是整數,但 b 是 logic 型態,故會回傳 FALSE

執行結果為:
logi TRUE
[1] FALSE

character

要定義一個character變數時,注意右邊的值,要用雙引號(" ")括起來


c <- "happy"    # c 的資料型態是character
adjective <- c   # c 是變數,把 c 存到 adjective 裡
str(adjective)   # 確認professor資料型態

執行結果為:
chr "happy"

vector

vector(陣列 / 向量)是 R 語言中很重要的資料型態,一列或一行長長的資料都會被儲存成 vector。定義 vector 的時候要使用 c()。


a <- c(2, 4, 6, 8, 10)           # 建立一個number vector
b <- c("delighted", "upset", "annoyed")  # 建立一個character vector
a
b

執行結果為:
[1] 2 4 6 8 10
[1] "delighted" "upset" "annoyed"

在 vector 裡面,無論是數字還是字串都稱之為 vector 的元素(element)。簡單來說可以把 vector 想像成一個長長的貨架,貨架上的商品(element)按照順序編號(index),表示方法為 object[index]。就上面 code 來說 vector b 裡面的 delighted 就表示為 b[1],upset 是 b[2],依此類推。因此,如果要取 vector a 中的 8 這個數字就要寫:


a[4]

另外要注意在 vector 裡每一個 element 都會是相同的型態,所以若是把 number 和 character 同時放入 vector 裡,R 會自動將所有 element 的型態,轉變成 character,logic 和 number 同時在 vector 裡的話 T和 F 會被自動轉換成 1和 0。

factor

factor的型態,主要用來表示「類別變數」(category variable)。例如性別(男、女)、年級(小一、小二......)、地區(東、西、南、北)等等......
在用R進行資料分析時,當遇到這類「類別變數」時,要轉換成 factor 的資料型態,再丟入模型(model)進行分析。
factor 的資料型態和 vector 很相似,但 factor 具有額外的類別屬性(levels)。
建立 factor 的變數,要使用factor() 這個 function。


direction <- c("west", "east", "north", "south")  # 建立一個 character vector
direction <- as.factor(direction)   # 轉換成 factor 型態
direction                    # Levels 的屬性代表在這個變數裡面,存在哪些類別

執行結果為:
[1] west east north south
Levels: east north south west

如果手邊有一組類別變數想要查看裡面存在著哪些類別,可以用levels()函式


levels(direction)

執行結果為:
[1] "east" "north" "south" "west"

由於剩下的資料型態較為複雜,因此明天再繼續講解 list、matrix 和 data frame 吧!


上一篇
Day 4 語料預處理 斷詞與停用詞篇
下一篇
Day 6 資料型態介紹 後篇
系列文
語言學與NLP30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言