2019年5月29日 星期三

R學習筆記 | R的6個基本資料型態(atomic data types)



R是一個物件導向的程式語言,即R裡所有的東西都是物件。在學習用R處理和分析資料之前,我們要先對資料型態有一定的認識,這樣才知道如何正確的建構和操作我們要分析的資料。

首先介紹R的6個基本資料型態(atomic data types)

資料(data)是資訊(information)的組合,可以用來乘載資訊的表現形式不勝枚舉,像是聲音、影像、溫度、體積、電量等等,而這些訊息又可以細分為由文字和數字組成,除了文字和數字,依照電腦資料分析的需求,R的基本資料型態(atomic data types)還包含邏輯和原始

下表整理了這六個資料型態是什麼?彼此之間有什麼區別?


6 atomic data types


Data type
Example
Note
character字串
"a" "Google"
文字字串,需以雙引號(或單引號)括起來
numeric實數、浮點數

a <- 0.8
1. 多數數值的型態
2. 浮點數(floating point)? 
在計算機儲存中和整數沒什麼區別,只是在解釋時須在指定位置加上小數點
3. 電腦用雙倍精準度(double)儲存,即64(8位元組)
integer整數
b <- 10L
加上L告訴電腦以整數儲存,用以區別浮點數
complex複數
c <- 5+2i
包含實數與虛數,少用不討論
logical邏輯
TRUE FALSE
邏輯判斷的結果
raw原始
charToRaw("ABC") =41 42 43
電腦儲存字元的原始碼,採十六進制,少用不討論


使用mode, class, typeof函數確認基本資料型態



那麼如何確認R物件的基本資料型態?

mode是用來確認資料型態的「模式」,是資料範疇最大的分類,所有物件只會有一個而且是唯一的mode,atomic modes包含numeric, complex, character, logical,其他recursive的物件有list, function等等。

Note: 在R裡,recursive和atomic是相對的,中文是「迴歸的」,我的理解是它可以自成一個type,所以像vector是atomic,list是recursive。簡單來說,除了6個atomic data types和NULL以外都是recursive。檢驗方式是is.atomic(), is.recursive()。

class是用來確認高階層分類的資料型態,常見的有6個atomic data type和其他recursive的物件。像是matrix, list和data.frame。

typeof則是用來確認低階層分類的資料型態,像是numeric裡面還可以分成double。不過這個我們通常很少使用。

以資料分類範疇大小來看: mode > class > typeof,一般最常使用的是class,函數(function)的處理取決於資料的class。


同樣的,還有另一個方式可以判斷基本資料型態。


使用is.character, is.numeric, is.integer, is.logical判斷基本資料型態

若想要確定資料型態,可以用is.資料型態名稱來進行邏輯判斷,其他recursive的資料型態也適用。


使用as.character, as.numeric, as.integer, as.logical改變基本資料型態


若想要轉換資料型態,可以用as.欲轉換資料型態來執行。

R資料型態的Coercion


我們知道,vector, matrix只能承載同一資料型態的元素物件,但是data frame可以允許不同資料型態的元素物件同時存在,當建立像vector, matrix的資料型態時,若包含兩種以上的資料型態時,R會自動把某些資料型態coerce成某一種,讓資料型態一致。

那麼Coercion的規則是什麼?

logical < numeric < character
For numbers: integer < numeric < complex

也就是當碰到這些資料型態混合在vector中,大魔王是character,大家碰到他都要乖乖變成character,以此類推。當各種數字型態出現時,則是根據最大範疇的數來決定,複數包含所有實數,實數則包含所有整數,誰的範疇最大誰就是老大,還蠻直覺的。

統計學 | 什麼是變方分析ANOVA? ANOVA的概念與統計檢定量的推導

什麼是 ANOVA? 在前面的統計學章節,我們學到單變量和兩變量的假設檢定,假設我們想要比較三個以上的樣 本 是否有差異,這時候就要使用 ANOVA了。 ANOVA, analysis of variance, 變方分析,雖然名為「變方」分析,但其實是用來檢定三個以上的樣本...