# 周次:w7
# 任務:認識資料結構
# 姓名:沈威至
# 日期:2021年03月19日
### 題組一 因素向量
# 建立一個文字向量 `speed_char` 描述速度的快慢
speed_char <- c("slow", "fast")
speed_char
## [1] "slow" "fast"
# 使用 `factor()` 函數轉換成因素向量 `speed_factor`,並且讓快慢有排序(慢 < 快)
speed_factor <- factor(speed_char,ordered = TRUE,levels = c("slow","fact"))
speed_factor 
## [1] slow <NA>
## Levels: slow < fact
class(speed_factor )
## [1] "ordered" "factor"
### 題組二 矩陣、陣列
# 建立一個矩陣叫做 `my_mat`,它是一個 3x3 的矩陣,裡面有 1 到 9 這些數字
my_mat <- matrix(1:9, nrow = 3)
my_mat
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
# 利用 `[m, n]`索引功能把 8 選出來
my_mat[2,3]
## [1] 8
# 利用 `[m, n]`索引功能把 第二行的內容印出來
my_mat[2,]
## [1] 2 5 8
# 利用 `[m, n]`索引功能把 第一欄的內容印出來
my_mat[ ,1]
## [1] 1 2 3
# 將矩陣的數字順序變成水平排列
my_mat <- matrix(1:9, nrow =3,byrow = TRUE )
my_mat
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## [3,]    7    8    9
# 對矩陣進行篩選,選出奇數(1、3、5、7、9)
my_mat <- matrix(1:9, nrow = 3)
filter <- my_mat %% 2 == 1
my_mat[filter]
## [1] 1 3 5 7 9
# 建立一個陣列叫做 `my_arr`,它是2個 3x3 的矩陣,裡面有 1 到 9 這些數字
my_arr <- array(1:8, dim = c(3,3,2))
my_arr
## , , 1
## 
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    1
## 
## , , 2
## 
##      [,1] [,2] [,3]
## [1,]    2    5    8
## [2,]    3    6    1
## [3,]    4    7    2
### 題組三 資料框
# 已建好以下資訊
team_name <- c("Chicago Bulls", "Golden State Warriors")
wins <- c(72, 73)
losses <- c(10, 9)
is_champion <- c(TRUE, FALSE)
season <- c("1995-96", "2015-16")
# 請建立一個名為`great_nba_teams` 的資料框
great_nba_teams <- data.frame(team_name,wins,losses,is_champion,season,stringsAsFactors = FALSE)
great_nba_teams
##               team_name wins losses is_champion  season
## 1         Chicago Bulls   72     10        TRUE 1995-96
## 2 Golden State Warriors   73      9       FALSE 2015-16
# 檢視資料框內容
# View(great_nba_teams)
names(great_nba_teams)
## [1] "team_name"   "wins"        "losses"      "is_champion" "season"
head(great_nba_teams)
##               team_name wins losses is_champion  season
## 1         Chicago Bulls   72     10        TRUE 1995-96
## 2 Golden State Warriors   73      9       FALSE 2015-16
tail(great_nba_teams)
##               team_name wins losses is_champion  season
## 1         Chicago Bulls   72     10        TRUE 1995-96
## 2 Golden State Warriors   73      9       FALSE 2015-16
nrow(great_nba_teams)
## [1] 2
# 檢視資料框的資料結構
str(great_nba_teams)
## 'data.frame':    2 obs. of  5 variables:
##  $ team_name  : chr  "Chicago Bulls" "Golden State Warriors"
##  $ wins       : num  72 73
##  $ losses     : num  10 9
##  $ is_champion: logi  TRUE FALSE
##  $ season     : chr  "1995-96" "2015-16"
# 請您分別利用 `$變數名稱` 與 `[, "變數名稱"]` 將 `is_champion` 變數挑出來
great_nba_teams$is_champion
## [1]  TRUE FALSE
# 1. 利用 `$變數名稱`
great_nba_teams[,"is_champion"]
## [1]  TRUE FALSE
great_nba_teams[,4]
## [1]  TRUE FALSE
# 2. 利用`[, "變數名稱"]`
great_nba_teams[2,]
##               team_name wins losses is_champion  season
## 2 Golden State Warriors   73      9       FALSE 2015-16
# 利用 `[m, n]`索引功能把第2個觀測值的內容印出來


# 題組四 清單
# 我們已經建立好幾個物件
title <- "Worst NBA Teams"
teams <- c("Charlotte Bobcats", "Philadelphia 76ers")
wins <- c(7, 9)
losses <- c(59, 73)
# 請收納進一個清單中叫做 `worst_nba_teams`
worst_nba_teams <- list(teams,wins,losses,great_nba_teams,my_mat,my_arr)
worst_nba_teams
## [[1]]
## [1] "Charlotte Bobcats"  "Philadelphia 76ers"
## 
## [[2]]
## [1] 7 9
## 
## [[3]]
## [1] 59 73
## 
## [[4]]
##               team_name wins losses is_champion  season
## 1         Chicago Bulls   72     10        TRUE 1995-96
## 2 Golden State Warriors   73      9       FALSE 2015-16
## 
## [[5]]
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
## 
## [[6]]
## , , 1
## 
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    1
## 
## , , 2
## 
##      [,1] [,2] [,3]
## [1,]    2    5    8
## [2,]    3    6    1
## [3,]    4    7    2
# 利用 `[[索引值]]` 從清單中選出 `wins` 這個向量
worst_nba_teams[[3]]
## [1] 59 73
# 同樣的幾個物件,請您建立清單 `worst_nba_teams` 的時候為每個物件命名
worst_nba_teams <- list(title=title,teams=teams,wins=wins,losses=losses,great_nba_teams=great_nba_teams,my_mat=my_mat,my_arr=my_arr)
# 利用 `$物件名稱` 從清單中選出 `teams` 這個向量
worst_nba_teams$teams
## [1] "Charlotte Bobcats"  "Philadelphia 76ers"
worst_nba_teams$great_nba_teams
##               team_name wins losses is_champion  season
## 1         Chicago Bulls   72     10        TRUE 1995-96
## 2 Golden State Warriors   73      9       FALSE 2015-16