一、向量(vector)

(一)認識向量

不知道大家聽到向量,會不會回憶起高中時間數學的不好印象,那這邊可以先跟大家掛保證,R語言裡面應用的向量,不會像高中數學時期那麼複雜,且相當直觀好理解喔~

在我們日常處理資料時,可能會一張完整的表(像是excel那樣的工作表),那麼當我們想要分析某列或是某行的時候,就會分別視為一個向量。而向量是一維資料的表現方式,用c()函數定義,參考以下範例:

vec_sample <- c(‘w’,’x’,’y’,’z’)

vec_sample

在範例當中,w~z視為vec_sample向量中的元素(element),各個元素就像是排列好的乘客,它們依照順序乘坐在該向量列車中!

(二)向量順序

提到了順序這個概念,那麼我們就可以透過選定,來提取向量中第n個元素:

vec_sample[1]

vec_sample[c(2,3)]

第一個程式碼vec_sample[1]是提取在vec_sample向量中的第1個元素,也就是“w”。

注意!而若是同時要提取多個元素,並不是vec_sample[2,3] 喔~而是要vec_sample[c(2,3)],在提取裡面還需要放一個向量喔!

(三)向量中的資料型態

在同一向量中,有個必須遵守的規則,那就是所有元素的資料型態必須是相同的,也就是我們上一小節介紹的數值(numeric)字串(character)布林代數(logic)

而若是不同型態的資料放進同一向量,則會直接被轉成一樣的:

vec_sample2 <- c(1,300,’yes’,’no’)

vec_sample2

在範例當中,我們將數值(1,300)和字串(yes,no)放進同一個向量中。可以看到最後數值資料都被轉為字串的資料型態了,那麼大家不仿可以試試若是把logic和numeric會被轉為哪個呢?

(四)連續向量

若是要產生一個連續性的向量,例如1,2,3,4 ,我們可以不需要一個一個把元素定義進一個向量裡,而是可以利用:或者seq()

來串起第一元素和最後一元素:

 1:100

 seq(from=1,to=100,by=1)  #1 ~ 100 , 數字間隔1

若是想要列出0~50中雙號:

 seq(from=0,to=50,by=2)

(五)向量運算

個別向量或者多個向量之間都是可以做數學運算的,當然若是要進行向量之間的運算,則要向量內的元素數目相等!那就直接來看向量間如何運算:

vec_sample3 <- 10:20

vec_sample4 <- seq(from=1,to=33,by=3)

(vec_sample3 + 100) ^ 2   # 所有元素先+100再取平方

vec_sample4 – vec_sample3

二、因子(factor

因子又稱類別變數,舉例:性別(生理男、生理女)、年級(大一、大二、大三、大四)、地區(北部、中部、南部、東部),當我們遇到以上這類變數時,會轉換成 fator 型態來做分析。

school_gender_sample <- c(‘male’,’female’,’male’,’male’,’male’,’female’)

school_gender_sample <- factor(school_gender_sample)

levels(school_gender_sample)

可以看到以上範例,首先我們先將學校學生性別定義為一向量,然後將此向量轉換成factor型態,最後我們即可以用levels()來找出該項目中,存在了哪些類別。

看到這裡可能會有些許同學會有疑問,怎麼factor和向量很像?其實沒錯,只是factor資料型態相較於vector額外多了類別屬性(levels)。

三、列表(list

介紹列表(list)之前,先幫各位大家回憶一下,在前面介紹向量(vector)時有個必須要遵守的規定,即是在一向量當中,所有變數的資料型態必須要相同,否則R會自動幫我們轉化成同一個型態。

然而我們有時候想儲存或分析一資料時,資料裡往往存在著許多不同資料類型,那麼我們就將使用列表list()函數來儲存!!舉例某賣場要建立會員資料時,裡面資料可能就包含性別(character)、年齡(numeric)、居住地(character)等等。

首先將顧客資料建立好:

consumer_1 <- list(gender=’male’,

                                 age=18,

                                 region=’Taipei’)

consumer_2 <- list(gender=’female’,

                                  age=23,

                                  region=’Tainan’)

 接著我們可以先使用str()函數查看列表內資料型態有哪些:

*小補充那麼我們將資料儲存進去之後,如果想要隨時查看,當然也要可以提取出來才行,例如我們想看某個顧客的性別或居住地,只要使用R語言裡最特別的程式碼$就可以將顧客內的變數提取出來查看!

consumer_1$gender #查看顧客1的性別

consumer_2$age #查看顧客2的年齡

四、矩陣(matrix)和資料框架(data frame

(一)矩陣(matrix

R語言中列出矩陣的方式也相當直觀簡單,通常直接使用matrix() 函式定義,可以跟著以下範例練習:

matrix_sample <- matrix(c(1:8),

                               nrow = 4,

                               ncol = 2)

matrix_sample

範例中欲建立一 4×2之矩陣,可以看到變數 nrow=  代表列數,而ncol= 則代表行數,接著建立數字1~8之向量放在此4×2矩陣之中。

而在學習向量時,有提到因向量之元素具有順序的特性,因此可以將某特定位置之元素提取出來查看。那麼在矩陣當中,每個元素也都有自己專屬的位置,例如(1,1)(2,3),而當元素具有固定座位時,我們當然也能將它提取出來檢視囉:

matrix_sample[4,1]  #使用的是[]

matrix_sample[3,2]

matrix_sample[2,]  #檢視第二列,因此在行的欄位空白

matrix_sample[,1]

矩陣也可以做運算,在單一個矩陣當中做數學運算就和在單一向量中方法相同,大家可以動手試試看喔!而在多個向量中做相乘就有個特別的符號%*% 要記一下囉~相信大家在高中也學過怎麼樣的兩個向量才能做運算吧,不要全部都還給高中數學老師喔~

#另外定義一個2×6矩陣

matrix_sample2 <- matrix(c(21:32),

                                  nrow = 2,

                                  ncol = 6,)

matrix_sample2

matrix_sample%*%matrix_sample2  #兩矩陣相乘

(二)資料框架(data frame

1.認識資料框

R語言中data frame可以直接理解成我們平常在excel中作業的sheet表,以下範例使用R語言內建鐵達尼號存活資料來呈現給大家看:

install.packages(“titanic”)  #安裝並啟動鐵達尼套件

library(titanic) 

View(titanic_train)  #使用View()函數查看完整鐵達尼訓練資料

 在使用View()此函數後,會跑出類似sheet表單,也就是R語言的data frame !

2.製作資料框

如同先前的向量以及矩陣,資料框在R語言裡當然也能運用特定函數 data.frame() ,那麼就一起來創造獨特的資料框吧:

View(dataframe_sample)

3.閱讀資料框

不管是R語言內建、我們自己建立的或者從外部匯入的資料框,可能都具有相當龐大的資訊量。那麼要未來如果想使用它或者分析它,就必須先完全理解它所有變數的資料型態、資料量等等資訊。除了上述所提到的View() 函數,我們還可以利用以下函數檢視不同資訊:

(1) head() 函數

首先,能取代View() 的一函數,由於每次使用View函數都會大量運用到電腦資源,因此我們找到能代替其並且閱覽功能相差不遠之函數,而head() 函數特色就是顯示前6項資料,可看作縮小版的View函數:

head(dataframe_sample)

(2)str()函數

論檢視變數資料型態,幾乎沒有比str()函數更好用的了,它不僅僅可以看出每個定義出來資料的資料結構(向量、矩陣、列表、資料框),更可以顯示每個資料集合的所有變數的資料型態(數值、字串、布林代數):

str(dataframe_sample)

可以看到以上範例,會直接顯示此資料集合:data frame結構,8筆資料數和5個變數。另外在每個變數裡會顯示資料型態,例如在gender變數,是屬於factor類型且分為兩種levels 。

(3)summary()函數

最後一個summary()函數,是一個能夠檢視每個變數內的描述性統計(平均數、中位數、個數等等)功能:

summary(dataframe_sample)

 

4.調整資料框變數

常見資料框都會有缺少變數或者擁有多餘用不到之變數問題,而為了使用以及分析上方便,我們常會透過新增以及刪除變數來調整原有資料框:

新增變數相當簡單,只要另外指派新的向量給原本資料框即可:

dataframe_sample$live_region <- c(“Taipei”,

                                                                 “Tainan”,

                                                                 “Taichung”,

                                                                 “Keelung”,

                                                                 “Miaoli”,

                                                                 “Taoyuan”,

                                                                 “Yilan”,

                                                                 “Chiayi”)

而刪除變數,只要將欲刪除之變數指派給NULL即可:

dataframe_sample$payment_method <- NULL

*小結:恭喜各位到這裡也已經學會R語言最基本也是最重要的資料結構了,在理解完這章節的資料結構和上章節的資料類型,接下來我們就可以開始學習如何整理資料結構和資料清洗了!