Liz's Blog

就是要學R #2:Matrix 矩陣篇

| Comments

今天學的是矩陣,比起昨天進階一點點,希望每天都學到一點點。

Udemy
課程名稱:Data Science and Machine Learning Bootcamp with R
講師:Jose Portilla

這個章節介紹矩陣(Matrix),簡單來說,昨天學的vector只有一行,矩陣則是變成多行。
1.Matrix基本運用
(1)輸入:matrix(1:5)
輸出:1 2 3 4 5

(2)輸入:matrix(1:8,nrow=2)
輸出:1 3 5 7
2 4 6 8

(3)輸入:matrix(1:8,byrow=TRUE,nrow=2)
輸出:1 2 3 4
5 6 7 8

(4)輸入:matrix(1:8,byrow=FALSE,nrow=2)
輸出:1 3 5 7
2 4 6 8

2.從vector資料結合成Matrix

TPE <- c(36,37,34,36,39)
KH <- c(32,33,34,36,34)

temps <- c(TPE,KH)
temp.matrix <- matrix(temps,byrow=T,nrow=2)

temp.matrix

輸出:
36 37 34 36 39
32 33 34 36 34

3.Matrix欄位命名(延續以上資料)

days <- c('Mon','Tue','Wed','Thu','Fri')
location <- c('TPE','KH')

colnames(temp.matrix) <- days
rownames(temp.matrix) <- location

temp.matrix

輸出:
Mon Tue Wed Thu Fri
TPE 36 37 34 36 39
KH 32 33 34 36 34

4.Matrix運算(延續以上資料)
(1)輸入:colSums(temp.matrix)
輸出:
Mon Tue Wed Thu Fri
68 70 68 72 73

(2)輸入:rowSums(temp.matrix)
輸出:
TPE KH
182 169

(3)輸入:rowMeans(temp.matrix)
輸出:
TPE KH
36.4 33.8

(4)

BER <- c(27,26,28,24,23)
airport.temps <- rbind(temp.matrix,BER)
airport.temps

輸出:
Mon Tue Wed Thu Fri
TPE 36 37 34 36 39
KH 32 33 34 36 34
BER 27 26 28 24 23

(5)

Avg <- rowMeans(airport.temps)
Avg

輸出:
TPE KH BER
36.4 33.8 25.6

(6)

airport.temps <- cbind(airport.temps,avg)
airport.temps

輸出:
Mon Tue Wed Thu Fri Avg
TPE 36 37 34 36 39 36.4
KH 32 33 34 36 34 33.8
BER 27 26 28 24 23 25.6

5.Matrix運算式(和昨天教的運算一樣直觀)

mat <- matrix(1:10,byrow=T,nrow=2)
mat

3 * mat
1 / mat
mat ^ 5
mat + mat
mat / mat

mat > 3

6.矩陣內積,可參考矩陣乘法

mat2 <- matrix(1:4,nrow=2)
mat2

mat2 %*% mat2

7.選擇及索引Matrix某個特定位置的元素

mat <- matrix(1:12,byrow=T,nrow=3)
mat

mat[2,]       #列出第二橫排
mat[,2]       #列出第二行
mat[1:2,]     #列出前二橫排
mat[1:2,2:3]

本來的matrix長這樣:
1 2 3 4
5 6 7 8
9 10 11 12
最後輸出則會得到:
2 3
6 7

8.使用factor()來創造Nominal或Ordinal類別矩陣。
(1)Nominal是屬於名目類別。

place <- c('t','k','t','t','k',)
factor.place <- factor(place)
factor.place

得到t和k兩種類別。

(2)Ordinal是屬於順序類別。

temps <- c('cold','med','cold','med','hot','hot','cold')
fact.temp <- factor(temps,ordered=TRUE,levels=c('cold','med','hot'))
fact.temp

cold med cold med hot hot cold

(3)
輸入:summary(temps)
輸出:
Length Class Mode
7 character character

(4)
輸入:summary(fact.temp)
輸出:
cold 3
med 2
hot 2

Comments

comments powered by Disqus