# 周次: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