# 周次:w9
# 任務:認識資料結構
# 姓名:高千琇
# 日期:2021年03月31日
# 請先下載google問卷結果
# 讓Rstudio cloud讀xlsx檔
# install.packages("readxl")
# library(readxl)
# data <- read_excel("psy.xlsx")
# View(data) 

# 另一種做法
# install.packages("readxl")
# install.packages("xlsx") #這個cloud也適用
library(xlsx)
data <- read.xlsx("psy.xlsx", 1, encoding = "UTF-8")

# 檢視資料檔案內容
#View(data)
str(data)
## 'data.frame':    18 obs. of  19 variables:
##  $ 時間戳記                                                                                        : POSIXct, format: "2021-02-27 10:14:22" "2021-02-27 10:30:25" ...
##  $ 電子郵件地址                                                                                    : chr  "0803brian@gmail.com" "bbirbbira@gmail.com" "p7786071@gmail.com" "kd910518@gmail.com" ...
##  $ 姓名                                                                                            : chr  "1130730408莊詠翔" "1130730404 陳芎宇" "1130730406 楊世宏" "1130730416 黄子騏" ...
##  $ 請問你的出生年月日                                                                              : Date, format: "2002-03-08" "2001-12-04" ...
##  $ 請問你的生理性別                                                                                : chr  "男" "男" "男" "男" ...
##  $ 請問你的身高.公分.                                                                              : num  180 173 170 177 169 178 172 167 188 158 ...
##  $ 請問你的體重.公斤.                                                                              : num  60 62 69 65 64 78 72 63 100 53 ...
##  $ 請問你大約每週有幾天會使用IG..單位..天數.                                                       : num  6 4 1 7 7 7 6 7 7 7 ...
##  $ 在你有玩IG的那一天.你一整天大概玩多久..以小時計算.請填數字.例如30分鐘.請填0.5小時.若3小時.則填3.: num  0.5 0.25 0.3 0.5 0.2 2 1 1 0.5 0.5 ...
##  $ 當在瀏覽IG時.你多常關注那些比你過得好的人.                                                      : chr  "經常" "有時" "有時" "有時" ...
##  $ 當在瀏覽IG時.你多常關注那些比你過得差的人.                                                      : chr  "有時" "完全沒有" "完全沒有" "有時" ...
##  $ 整體而言.你對於自己滿不滿意.                                                                    : chr  "普通" "普通" "普通" "滿意" ...
##  $ 整體而言.你對於你的社交生活滿不滿意.                                                            : chr  "普通" "不滿意" "滿意" "滿意" ...
##  $ 整體而言.你對自己目前的健康狀況滿不滿意.                                                        : chr  "非常不滿意" "普通" "滿意" "滿意" ...
##  $ 整體而言.你對於你的生活滿不滿意.                                                                : chr  "普通" "不滿意" "滿意" "滿意" ...
##  $ 請問你有心事的時候.經常找哪位同學聊聊                                                           : chr  "1130730401張藝馨" "1130730404 陳芎宇" "1130730404 陳芎宇" "1130730414 蔡承軒" ...
##  $ 請問你缺錢的時候.經常找哪位同學借錢                                                             : chr  "1130730406 楊世宏" "1130730404 陳芎宇" "1130730401張藝馨" "1130730402洪銘材" ...
##  $ 請用20個字以上描述你認為軍校生應具備的特質與能力                                                : chr  "懂得變通,不能什麼都只聽上面的人說話,要有自己的想法,但也不能直接頂撞,要保護自己" "能夠服從上級命令,卻又不失自己的想法,不會盲目的服從" "我認為軍校生要勤奮自主,並且有靈活的思考方式。" "應該要能對自己的國家有認同感,培養國際局勢,並於在學期間規劃好未來生涯" ...
##  $ 請用20個字以上描述你的理想情人的標準與特質                                                      : chr  "長頭髮、可愛型的、稍微粘人但也不要太黏,160-170之間" "能夠了解我的,能夠體諒我的個性的,能夠聽我和陪我說話的" "能夠互相理解、尊重彼此的喜好、協助對方完成目標、視彼此為重要他人。" "我也沒什麼好描述的啦,條件又沒多好哪有資格要求東要求西,感覺對了就好反正也把不到" ...
# 檢視欄位名稱
names(data)
##  [1] "時間戳記"                                                                                        
##  [2] "電子郵件地址"                                                                                    
##  [3] "姓名"                                                                                            
##  [4] "請問你的出生年月日"                                                                              
##  [5] "請問你的生理性別"                                                                                
##  [6] "請問你的身高.公分."                                                                              
##  [7] "請問你的體重.公斤."                                                                              
##  [8] "請問你大約每週有幾天會使用IG..單位..天數."                                                       
##  [9] "在你有玩IG的那一天.你一整天大概玩多久..以小時計算.請填數字.例如30分鐘.請填0.5小時.若3小時.則填3."
## [10] "當在瀏覽IG時.你多常關注那些比你過得好的人."                                                      
## [11] "當在瀏覽IG時.你多常關注那些比你過得差的人."                                                      
## [12] "整體而言.你對於自己滿不滿意."                                                                    
## [13] "整體而言.你對於你的社交生活滿不滿意."                                                            
## [14] "整體而言.你對自己目前的健康狀況滿不滿意."                                                        
## [15] "整體而言.你對於你的生活滿不滿意."                                                                
## [16] "請問你有心事的時候.經常找哪位同學聊聊"                                                           
## [17] "請問你缺錢的時候.經常找哪位同學借錢"                                                             
## [18] "請用20個字以上描述你認為軍校生應具備的特質與能力"                                                
## [19] "請用20個字以上描述你的理想情人的標準與特質"
# 用英文重新命名欄位名稱
names(data)[1:19] <- c("time", "email", 
                       "name","birth",
                       "gender","height",
                       "weight","useig","usetime",
                       "up_com","down_com", 
                       "sat_self","sat_social",
                       "sat_health","sat_life",
                       "mate_talk","mate_money",
                       "cadet","lover") 
names(data)
##  [1] "time"       "email"      "name"       "birth"      "gender"    
##  [6] "height"     "weight"     "useig"      "usetime"    "up_com"    
## [11] "down_com"   "sat_self"   "sat_social" "sat_health" "sat_life"  
## [16] "mate_talk"  "mate_money" "cadet"      "lover"
### 題組一 因素向量
# 1. 將變項自我滿意程度改成因素向量,且滿意程度有排序
# 先檢視變項自我滿意程度
# 1. 將變項性別改成因素向量,且依男女排序
# 先檢視變項
data$gender
##  [1] "男" "男" "男" "男" "男" "男" "男" "男" "男" "女" "男" "男" "男" "女" "男"
## [16] "男" "女" "男"
class(data$gender)
## [1] "character"
# 用factor或as.factor函數進行轉換
data$gender
##  [1] "男" "男" "男" "男" "男" "男" "男" "男" "男" "女" "男" "男" "男" "女" "男"
## [16] "男" "女" "男"
class(data$gender)
## [1] "character"
# 用factor或as.factor函數進行轉換
data$gender<- as.factor(data$gender) 
data$gender <- factor(data$gender,
                      ordered = TRUE,
                      levels = c("男","女")) 
data$gender
##  [1] 男 男 男 男 男 男 男 男 男 女 男 男 男 女 男 男 女 男
## Levels: 男 < 女
# 用factor或as.factor函數進行轉換

### 題組二 矩陣、陣列
# 建立一個名為my_mat的矩陣,含姓名、談心對象、借錢對象
my_mat <- as.matrix(data[1:18,c(3,16:17)])  # using as.matrix.data.frame(.) method
my_mat
##    name                mate_talk           mate_money         
## 1  "1130730408莊詠翔"  "1130730401張藝馨"  "1130730406 楊世宏"
## 2  "1130730404 陳芎宇" "1130730404 陳芎宇" "1130730404 陳芎宇"
## 3  "1130730406 楊世宏" "1130730404 陳芎宇" "1130730401張藝馨" 
## 4  "1130730416 黄子騏" "1130730414 蔡承軒" "1130730402洪銘材" 
## 5  "1130730417廖呈祐"  "1130730401張藝馨"  "1130730406 楊世宏"
## 6  "1130730415羅勝鴻"  "1130730418 林秉玄" "1130730418 林秉玄"
## 7  "1130730401張藝馨"  "1130730401張藝馨"  "1130730406 楊世宏"
## 8  "1130730413方正順"  "1130730406 楊世宏" "1130730406 楊世宏"
## 9  "1130730414 蔡承軒" "1130730416 黄子騏" "1130730415羅勝鴻" 
## 10 "1130730421 鄧淑芸" "1130730422 陳昕辰" "1130730422 陳昕辰"
## 11 "1130730407鄭富元"  "1130730415羅勝鴻"  "1130730417廖呈祐" 
## 12 "1130730405 陳嘉成" "1130730406 楊世宏" "1130730406 楊世宏"
## 13 "1130730412洪浩智"  "1130730406 楊世宏" "1130730406 楊世宏"
## 14 "1130730422 陳昕辰" "1130730422 陳昕辰" "1130730422 陳昕辰"
## 15 "1130730418 林秉玄" "1130730415羅勝鴻"  "1130730416 黄子騏"
## 16 "1130730402洪銘材"  "1130730411 楊享富" "1130730401張藝馨" 
## 17 "1130730420 高千琇" "1130730407鄭富元"  "1130730407鄭富元" 
## 18 "1130730411 楊享富" "1130730402洪銘材"  "1130730402洪銘材"
# 請問第5位同學的談心對象、借錢對象是誰?
my_mat[5, ]
##                name           mate_talk          mate_money 
##  "1130730417廖呈祐"  "1130730401張藝馨" "1130730406 楊世宏"
# 請問所有同學的借錢對象是誰?
my_mat[, 3]
##                   1                   2                   3                   4 
## "1130730406 楊世宏" "1130730404 陳芎宇"  "1130730401張藝馨"  "1130730402洪銘材" 
##                   5                   6                   7                   8 
## "1130730406 楊世宏" "1130730418 林秉玄" "1130730406 楊世宏" "1130730406 楊世宏" 
##                   9                  10                  11                  12 
##  "1130730415羅勝鴻" "1130730422 陳昕辰"  "1130730417廖呈祐" "1130730406 楊世宏" 
##                  13                  14                  15                  16 
## "1130730406 楊世宏" "1130730422 陳昕辰" "1130730416 黄子騏"  "1130730401張藝馨" 
##                  17                  18 
##  "1130730407鄭富元"  "1130730402洪銘材"
### 題組三 資料框
# 檢視問卷(已是資料框形式)的資料內容
#view(data)
# 檢視資料框的資料結構
str(data)
## 'data.frame':    18 obs. of  19 variables:
##  $ time      : POSIXct, format: "2021-02-27 10:14:22" "2021-02-27 10:30:25" ...
##  $ email     : chr  "0803brian@gmail.com" "bbirbbira@gmail.com" "p7786071@gmail.com" "kd910518@gmail.com" ...
##  $ name      : chr  "1130730408莊詠翔" "1130730404 陳芎宇" "1130730406 楊世宏" "1130730416 黄子騏" ...
##  $ birth     : Date, format: "2002-03-08" "2001-12-04" ...
##  $ gender    : Ord.factor w/ 2 levels "男"<"女": 1 1 1 1 1 1 1 1 1 2 ...
##  $ height    : num  180 173 170 177 169 178 172 167 188 158 ...
##  $ weight    : num  60 62 69 65 64 78 72 63 100 53 ...
##  $ useig     : num  6 4 1 7 7 7 6 7 7 7 ...
##  $ usetime   : num  0.5 0.25 0.3 0.5 0.2 2 1 1 0.5 0.5 ...
##  $ up_com    : chr  "經常" "有時" "有時" "有時" ...
##  $ down_com  : chr  "有時" "完全沒有" "完全沒有" "有時" ...
##  $ sat_self  : chr  "普通" "普通" "普通" "滿意" ...
##  $ sat_social: chr  "普通" "不滿意" "滿意" "滿意" ...
##  $ sat_health: chr  "非常不滿意" "普通" "滿意" "滿意" ...
##  $ sat_life  : chr  "普通" "不滿意" "滿意" "滿意" ...
##  $ mate_talk : chr  "1130730401張藝馨" "1130730404 陳芎宇" "1130730404 陳芎宇" "1130730414 蔡承軒" ...
##  $ mate_money: chr  "1130730406 楊世宏" "1130730404 陳芎宇" "1130730401張藝馨" "1130730402洪銘材" ...
##  $ cadet     : chr  "懂得變通,不能什麼都只聽上面的人說話,要有自己的想法,但也不能直接頂撞,要保護自己" "能夠服從上級命令,卻又不失自己的想法,不會盲目的服從" "我認為軍校生要勤奮自主,並且有靈活的思考方式。" "應該要能對自己的國家有認同感,培養國際局勢,並於在學期間規劃好未來生涯" ...
##  $ lover     : chr  "長頭髮、可愛型的、稍微粘人但也不要太黏,160-170之間" "能夠了解我的,能夠體諒我的個性的,能夠聽我和陪我說話的" "能夠互相理解、尊重彼此的喜好、協助對方完成目標、視彼此為重要他人。" "我也沒什麼好描述的啦,條件又沒多好哪有資格要求東要求西,感覺對了就好反正也把不到" ...
# 資料框的欄位名稱為何
names(data)
##  [1] "time"       "email"      "name"       "birth"      "gender"    
##  [6] "height"     "weight"     "useig"      "usetime"    "up_com"    
## [11] "down_com"   "sat_self"   "sat_social" "sat_health" "sat_life"  
## [16] "mate_talk"  "mate_money" "cadet"      "lover"
# 資料的觀察值數量
nrow(data)
## [1] 18
# 資料預覽
head(data)
##                  time                   email              name      birth
## 1 2021-02-27 10:14:22     0803brian@gmail.com  1130730408莊詠翔 2002-03-08
## 2 2021-02-27 10:30:25     bbirbbira@gmail.com 1130730404 陳芎宇 2001-12-04
## 3 2021-02-27 10:31:47      p7786071@gmail.com 1130730406 楊世宏 2001-10-15
## 4 2021-02-27 10:50:07      kd910518@gmail.com 1130730416 黄子騏 2002-05-18
## 5 2021-02-27 10:55:39     lcy200195@gmail.com  1130730417廖呈祐 2001-09-05
## 6 2021-02-27 10:56:57 brianlo900421@gmail.com  1130730415羅勝鴻 2001-04-21
##   gender height weight useig usetime   up_com down_com sat_self sat_social
## 1     男    180     60     6    0.50     經常     有時     普通       普通
## 2     男    173     62     4    0.25     有時 完全沒有     普通     不滿意
## 3     男    170     69     1    0.30     有時 完全沒有     普通       滿意
## 4     男    177     65     7    0.50     有時     有時     滿意       滿意
## 5     男    169     64     7    0.20 完全沒有 完全沒有     滿意       滿意
## 6     男    178     78     7    2.00     有時     有時   不滿意       普通
##   sat_health sat_life         mate_talk        mate_money
## 1 非常不滿意     普通  1130730401張藝馨 1130730406 楊世宏
## 2       普通   不滿意 1130730404 陳芎宇 1130730404 陳芎宇
## 3       滿意     滿意 1130730404 陳芎宇  1130730401張藝馨
## 4       滿意     滿意 1130730414 蔡承軒  1130730402洪銘材
## 5       滿意     滿意  1130730401張藝馨 1130730406 楊世宏
## 6       滿意     滿意 1130730418 林秉玄 1130730418 林秉玄
##                                                                                cadet
## 1 懂得變通,不能什麼都只聽上面的人說話,要有自己的想法,但也不能直接頂撞,要保護自己
## 2                               能夠服從上級命令,卻又不失自己的想法,不會盲目的服從
## 3                                     我認為軍校生要勤奮自主,並且有靈活的思考方式。
## 4             應該要能對自己的國家有認同感,培養國際局勢,並於在學期間規劃好未來生涯
## 5           重視團隊合作,有持續學習的企圖心,對自己的生活負責,且行事認真不貪圖方便
## 6                                   我認為軍校生應該具有處理事情的應變能力以及抗壓性
##                                                                              lover
## 1                              長頭髮、可愛型的、稍微粘人但也不要太黏,160-170之間
## 2                           能夠了解我的,能夠體諒我的個性的,能夠聽我和陪我說話的
## 3               能夠互相理解、尊重彼此的喜好、協助對方完成目標、視彼此為重要他人。
## 4 我也沒什麼好描述的啦,條件又沒多好哪有資格要求東要求西,感覺對了就好反正也把不到
## 5                 不過度挑食,生活不奢靡,單純善良,能夠對自己的生活負責,愛笑開朗
## 6                          我的理想情人標準是身材勻稱 五官端正,特質是能夠彼此體諒
tail(data)
##                   time                    email              name      birth
## 13 2021-02-27 19:07:45   eric20010121@gmail.com  1130730412洪浩智 2002-01-21
## 14 2021-02-27 23:08:26      anne21230@gmail.com 1130730422 陳昕辰 2001-12-21
## 15 2021-03-03 08:05:26   benson081014@gmail.com 1130730418 林秉玄 2002-08-10
## 16 2021-03-03 08:57:14     tzuyumomo2@gmail.com  1130730402洪銘材 2002-08-17
## 17 2021-03-03 08:58:34       gqianxiu@gmail.com 1130730420 高千琇 2002-03-26
## 18 2021-03-03 08:58:34 fenab.06.12.06@gmail.com 1130730411 楊享富 2002-03-30
##    gender height weight useig usetime   up_com down_com sat_self sat_social
## 13     男    176     82     5    1.00     經常     有時     普通       普通
## 14     女    164     48     7    0.50 完全沒有 完全沒有   不滿意     不滿意
## 15     男    170     53     7    2.00     很少     很少     普通       普通
## 16     男    186     80     5    0.50     很少     很少     滿意       滿意
## 17     女    165     59     7    3.00     有時     很少     普通       滿意
## 18     男    176     72     5    0.35     有時     很少     滿意       滿意
##    sat_health sat_life         mate_talk        mate_money
## 13       普通     普通 1130730406 楊世宏 1130730406 楊世宏
## 14       普通     滿意 1130730422 陳昕辰 1130730422 陳昕辰
## 15       滿意     普通  1130730415羅勝鴻 1130730416 黄子騏
## 16       普通     滿意 1130730411 楊享富  1130730401張藝馨
## 17     不滿意   不滿意  1130730407鄭富元  1130730407鄭富元
## 18       滿意     滿意  1130730402洪銘材  1130730402洪銘材
##                                                                           cadet
## 13       領袖才能和統御能力是必備的,我認為還需要具備同理心,知道底下官兵的需求
## 14   愛國,體力好,忍耐,服從,沈著,機警,勇敢,不怕死,不怕難,積極,時間管理
## 15                             誠實並將自己該做的事做好不用他人提醒不用他人擔心
## 16                              霸氣外露 注重細節 做事情要有條理 不要亂搞學弟妹
## 17                能夠安排利用時間 獨立思考的能力 高抗壓性 負責任 對自我的肯定 
## 18 獨立自主,上進心,社交能力,成績可,體能好,認真負責,獨立思考,獨立批判能力
##                                                                                lover
## 13                                希望她能一直愛著我,不要對我說謊,貼心能夠理解我的
## 14                                    有工作收入,年上,有錢,有共同興趣,講話很好笑
## 15                                  我的理想情人標準是溫柔體貼不會做不好的事不菸不酒
## 16                                         高於170 可愛 漂亮 不要太粘人 不要無理取鬧
## 17 有身高有顏值會開車會打球會煮飯會拍照會音樂 體貼溫柔浪漫幽默負責任情商高等等的男生
## 18                              聊得來,看得舒服,個性和,自己喜歡,善良,喜歡小動物
# 請將變數"軍校生應具備的特質"的內容印出來
data$cadet
##  [1] "懂得變通,不能什麼都只聽上面的人說話,要有自己的想法,但也不能直接頂撞,要保護自己"
##  [2] "能夠服從上級命令,卻又不失自己的想法,不會盲目的服從"                              
##  [3] "我認為軍校生要勤奮自主,並且有靈活的思考方式。"                                    
##  [4] "應該要能對自己的國家有認同感,培養國際局勢,並於在學期間規劃好未來生涯"            
##  [5] "重視團隊合作,有持續學習的企圖心,對自己的生活負責,且行事認真不貪圖方便"          
##  [6] "我認為軍校生應該具有處理事情的應變能力以及抗壓性"                                  
##  [7] "軍校我覺得要養成獨立思考的能力,並且觀察外界環境變化去做應對進退"                  
##  [8] "忠誠僕實 用心致志 團結合作 不菸不嚼檳榔 不輕易飲酒 隨心所欲 不逾矩"                
##  [9] "外表嚴肅內心輕鬆 能收能放台面上跟台面下分的清楚可以讀懂氣氛"                       
## [10] "我認為軍校生應具備誠實,勇於承認錯誤並改進且對於自己不擅長的事務勇於學習"          
## [11] "誠實榮譽守時守紀律會玩也懂得收心待人處事的態度和善捍衛國家堅守崗位"                
## [12] "服從忍耐 刻苦耐勞 積極向學 勤奮向上 熱心助人"                                      
## [13] "領袖才能和統御能力是必備的,我認為還需要具備同理心,知道底下官兵的需求"            
## [14] "愛國,體力好,忍耐,服從,沈著,機警,勇敢,不怕死,不怕難,積極,時間管理"        
## [15] "誠實並將自己該做的事做好不用他人提醒不用他人擔心"                                  
## [16] "霸氣外露 注重細節 做事情要有條理 不要亂搞學弟妹"                                   
## [17] "能夠安排利用時間 獨立思考的能力 高抗壓性 負責任 對自我的肯定 "                     
## [18] "獨立自主,上進心,社交能力,成績可,體能好,認真負責,獨立思考,獨立批判能力"
# 另一種做法
data[,18]
##  [1] "懂得變通,不能什麼都只聽上面的人說話,要有自己的想法,但也不能直接頂撞,要保護自己"
##  [2] "能夠服從上級命令,卻又不失自己的想法,不會盲目的服從"                              
##  [3] "我認為軍校生要勤奮自主,並且有靈活的思考方式。"                                    
##  [4] "應該要能對自己的國家有認同感,培養國際局勢,並於在學期間規劃好未來生涯"            
##  [5] "重視團隊合作,有持續學習的企圖心,對自己的生活負責,且行事認真不貪圖方便"          
##  [6] "我認為軍校生應該具有處理事情的應變能力以及抗壓性"                                  
##  [7] "軍校我覺得要養成獨立思考的能力,並且觀察外界環境變化去做應對進退"                  
##  [8] "忠誠僕實 用心致志 團結合作 不菸不嚼檳榔 不輕易飲酒 隨心所欲 不逾矩"                
##  [9] "外表嚴肅內心輕鬆 能收能放台面上跟台面下分的清楚可以讀懂氣氛"                       
## [10] "我認為軍校生應具備誠實,勇於承認錯誤並改進且對於自己不擅長的事務勇於學習"          
## [11] "誠實榮譽守時守紀律會玩也懂得收心待人處事的態度和善捍衛國家堅守崗位"                
## [12] "服從忍耐 刻苦耐勞 積極向學 勤奮向上 熱心助人"                                      
## [13] "領袖才能和統御能力是必備的,我認為還需要具備同理心,知道底下官兵的需求"            
## [14] "愛國,體力好,忍耐,服從,沈著,機警,勇敢,不怕死,不怕難,積極,時間管理"        
## [15] "誠實並將自己該做的事做好不用他人提醒不用他人擔心"                                  
## [16] "霸氣外露 注重細節 做事情要有條理 不要亂搞學弟妹"                                   
## [17] "能夠安排利用時間 獨立思考的能力 高抗壓性 負責任 對自我的肯定 "                     
## [18] "獨立自主,上進心,社交能力,成績可,體能好,認真負責,獨立思考,獨立批判能力"
# 請將第7至12位同學的"生日"印出來
data[7:12,4]
## [1] "2002-07-18" "2001-11-11" "2002-03-30" "2002-04-23" "2001-10-06"
## [6] "2001-10-29"
# 建立新資料框df,刪除原本資料第1、2欄位的變數
df <- data[, -c(1:2)]
names(df)
##  [1] "name"       "birth"      "gender"     "height"     "weight"    
##  [6] "useig"      "usetime"    "up_com"     "down_com"   "sat_self"  
## [11] "sat_social" "sat_health" "sat_life"   "mate_talk"  "mate_money"
## [16] "cadet"      "lover"
# 另一種做法
df <- subset(data,select = -c(1:2))
names(df)
##  [1] "name"       "birth"      "gender"     "height"     "weight"    
##  [6] "useig"      "usetime"    "up_com"     "down_com"   "sat_self"  
## [11] "sat_social" "sat_health" "sat_life"   "mate_talk"  "mate_money"
## [16] "cadet"      "lover"
# 題組四 清單
# 1. 我們已經建立好幾個物件my_mat, data, df
# 請收納進一個清單中叫做 `all`
all <- list(my_mat, data, df)
# 請將my_mat矩陣叫出
all[[1]]
##    name                mate_talk           mate_money         
## 1  "1130730408莊詠翔"  "1130730401張藝馨"  "1130730406 楊世宏"
## 2  "1130730404 陳芎宇" "1130730404 陳芎宇" "1130730404 陳芎宇"
## 3  "1130730406 楊世宏" "1130730404 陳芎宇" "1130730401張藝馨" 
## 4  "1130730416 黄子騏" "1130730414 蔡承軒" "1130730402洪銘材" 
## 5  "1130730417廖呈祐"  "1130730401張藝馨"  "1130730406 楊世宏"
## 6  "1130730415羅勝鴻"  "1130730418 林秉玄" "1130730418 林秉玄"
## 7  "1130730401張藝馨"  "1130730401張藝馨"  "1130730406 楊世宏"
## 8  "1130730413方正順"  "1130730406 楊世宏" "1130730406 楊世宏"
## 9  "1130730414 蔡承軒" "1130730416 黄子騏" "1130730415羅勝鴻" 
## 10 "1130730421 鄧淑芸" "1130730422 陳昕辰" "1130730422 陳昕辰"
## 11 "1130730407鄭富元"  "1130730415羅勝鴻"  "1130730417廖呈祐" 
## 12 "1130730405 陳嘉成" "1130730406 楊世宏" "1130730406 楊世宏"
## 13 "1130730412洪浩智"  "1130730406 楊世宏" "1130730406 楊世宏"
## 14 "1130730422 陳昕辰" "1130730422 陳昕辰" "1130730422 陳昕辰"
## 15 "1130730418 林秉玄" "1130730415羅勝鴻"  "1130730416 黄子騏"
## 16 "1130730402洪銘材"  "1130730411 楊享富" "1130730401張藝馨" 
## 17 "1130730420 高千琇" "1130730407鄭富元"  "1130730407鄭富元" 
## 18 "1130730411 楊享富" "1130730402洪銘材"  "1130730402洪銘材"
# 將清單命名
all <- list(my_mat=my_mat, data=my_mat, df=df)
# 請將df資料框叫出
all$df
##                 name      birth gender height weight useig usetime   up_com
## 1   1130730408莊詠翔 2002-03-08     男    180     60     6    0.50     經常
## 2  1130730404 陳芎宇 2001-12-04     男    173     62     4    0.25     有時
## 3  1130730406 楊世宏 2001-10-15     男    170     69     1    0.30     有時
## 4  1130730416 黄子騏 2002-05-18     男    177     65     7    0.50     有時
## 5   1130730417廖呈祐 2001-09-05     男    169     64     7    0.20 完全沒有
## 6   1130730415羅勝鴻 2001-04-21     男    178     78     7    2.00     有時
## 7   1130730401張藝馨 2002-07-18     男    172     72     6    1.00     有時
## 8   1130730413方正順 2001-11-11     男    167     63     7    1.00 完全沒有
## 9  1130730414 蔡承軒 2002-03-30     男    188    100     7    0.50     很少
## 10 1130730421 鄧淑芸 2002-04-23     女    158     53     7    0.50 完全沒有
## 11  1130730407鄭富元 2001-10-06     男    172     55     7    2.00 完全沒有
## 12 1130730405 陳嘉成 2001-10-29     男    170     69     7    1.00 完全沒有
## 13  1130730412洪浩智 2002-01-21     男    176     82     5    1.00     經常
## 14 1130730422 陳昕辰 2001-12-21     女    164     48     7    0.50 完全沒有
## 15 1130730418 林秉玄 2002-08-10     男    170     53     7    2.00     很少
## 16  1130730402洪銘材 2002-08-17     男    186     80     5    0.50     很少
## 17 1130730420 高千琇 2002-03-26     女    165     59     7    3.00     有時
## 18 1130730411 楊享富 2002-03-30     男    176     72     5    0.35     有時
##    down_com sat_self sat_social sat_health sat_life         mate_talk
## 1      有時     普通       普通 非常不滿意     普通  1130730401張藝馨
## 2  完全沒有     普通     不滿意       普通   不滿意 1130730404 陳芎宇
## 3  完全沒有     普通       滿意       滿意     滿意 1130730404 陳芎宇
## 4      有時     滿意       滿意       滿意     滿意 1130730414 蔡承軒
## 5  完全沒有     滿意       滿意       滿意     滿意  1130730401張藝馨
## 6      有時   不滿意       普通       滿意     滿意 1130730418 林秉玄
## 7      經常 非常滿意   非常滿意       普通 非常滿意  1130730401張藝馨
## 8  完全沒有     滿意     不滿意       普通     滿意 1130730406 楊世宏
## 9      很少     普通       普通     不滿意   不滿意 1130730416 黄子騏
## 10 完全沒有     普通       普通       普通     普通 1130730422 陳昕辰
## 11 完全沒有     普通       滿意       滿意     普通  1130730415羅勝鴻
## 12 完全沒有     普通       普通       普通     滿意 1130730406 楊世宏
## 13     有時     普通       普通       普通     普通 1130730406 楊世宏
## 14 完全沒有   不滿意     不滿意       普通     滿意 1130730422 陳昕辰
## 15     很少     普通       普通       滿意     普通  1130730415羅勝鴻
## 16     很少     滿意       滿意       普通     滿意 1130730411 楊享富
## 17     很少     普通       滿意     不滿意   不滿意  1130730407鄭富元
## 18     很少     滿意       滿意       滿意     滿意  1130730402洪銘材
##           mate_money
## 1  1130730406 楊世宏
## 2  1130730404 陳芎宇
## 3   1130730401張藝馨
## 4   1130730402洪銘材
## 5  1130730406 楊世宏
## 6  1130730418 林秉玄
## 7  1130730406 楊世宏
## 8  1130730406 楊世宏
## 9   1130730415羅勝鴻
## 10 1130730422 陳昕辰
## 11  1130730417廖呈祐
## 12 1130730406 楊世宏
## 13 1130730406 楊世宏
## 14 1130730422 陳昕辰
## 15 1130730416 黄子騏
## 16  1130730401張藝馨
## 17  1130730407鄭富元
## 18  1130730402洪銘材
##                                                                                 cadet
## 1  懂得變通,不能什麼都只聽上面的人說話,要有自己的想法,但也不能直接頂撞,要保護自己
## 2                                能夠服從上級命令,卻又不失自己的想法,不會盲目的服從
## 3                                      我認為軍校生要勤奮自主,並且有靈活的思考方式。
## 4              應該要能對自己的國家有認同感,培養國際局勢,並於在學期間規劃好未來生涯
## 5            重視團隊合作,有持續學習的企圖心,對自己的生活負責,且行事認真不貪圖方便
## 6                                    我認為軍校生應該具有處理事情的應變能力以及抗壓性
## 7                    軍校我覺得要養成獨立思考的能力,並且觀察外界環境變化去做應對進退
## 8                  忠誠僕實 用心致志 團結合作 不菸不嚼檳榔 不輕易飲酒 隨心所欲 不逾矩
## 9                         外表嚴肅內心輕鬆 能收能放台面上跟台面下分的清楚可以讀懂氣氛
## 10           我認為軍校生應具備誠實,勇於承認錯誤並改進且對於自己不擅長的事務勇於學習
## 11                 誠實榮譽守時守紀律會玩也懂得收心待人處事的態度和善捍衛國家堅守崗位
## 12                                       服從忍耐 刻苦耐勞 積極向學 勤奮向上 熱心助人
## 13             領袖才能和統御能力是必備的,我認為還需要具備同理心,知道底下官兵的需求
## 14         愛國,體力好,忍耐,服從,沈著,機警,勇敢,不怕死,不怕難,積極,時間管理
## 15                                   誠實並將自己該做的事做好不用他人提醒不用他人擔心
## 16                                    霸氣外露 注重細節 做事情要有條理 不要亂搞學弟妹
## 17                      能夠安排利用時間 獨立思考的能力 高抗壓性 負責任 對自我的肯定 
## 18       獨立自主,上進心,社交能力,成績可,體能好,認真負責,獨立思考,獨立批判能力
##                                                                                         lover
## 1                                         長頭髮、可愛型的、稍微粘人但也不要太黏,160-170之間
## 2                                      能夠了解我的,能夠體諒我的個性的,能夠聽我和陪我說話的
## 3                          能夠互相理解、尊重彼此的喜好、協助對方完成目標、視彼此為重要他人。
## 4            我也沒什麼好描述的啦,條件又沒多好哪有資格要求東要求西,感覺對了就好反正也把不到
## 5                            不過度挑食,生活不奢靡,單純善良,能夠對自己的生活負責,愛笑開朗
## 6                                     我的理想情人標準是身材勻稱 五官端正,特質是能夠彼此體諒
## 7  我只希望我們能互相理解,互相付出,不是只有單一方無限的付出,最後只淪為平淡以及..被發好人卡
## 8                                          生活平凡 思緒清晰 受過音樂或美術訓練 理解我的工作 
## 9                         不要比我高 可以一直陪伴我像我的右手一樣\n可以跟我一起幹話一起看動漫
## 10                      高 身材精實但不壯 懂得體貼 懂得照顧人 可以容忍我的脾氣 彼此價值觀契合
## 11                 幽默風趣值得信賴的會帶我出去遊山玩水偶爾會小吵架不容易吃醋待人處事的態度好
## 12                                                過往的伙食狀況勿太過豐盛  熱心助人 善待長者
## 13                                         希望她能一直愛著我,不要對我說謊,貼心能夠理解我的
## 14                                             有工作收入,年上,有錢,有共同興趣,講話很好笑
## 15                                           我的理想情人標準是溫柔體貼不會做不好的事不菸不酒
## 16                                                  高於170 可愛 漂亮 不要太粘人 不要無理取鬧
## 17          有身高有顏值會開車會打球會煮飯會拍照會音樂 體貼溫柔浪漫幽默負責任情商高等等的男生
## 18                                       聊得來,看得舒服,個性和,自己喜歡,善良,喜歡小動物
mid <- as.Date("2002-01-01")
mid 
## [1] "2002-01-01"
as.integer(mid) 
## [1] 11688
birth <- as.Date(data$birth)
as.integer(birth) 
##  [1] 11754 11660 11610 11825 11570 11433 11886 11637 11776 11800 11601 11624
## [13] 11708 11677 11909 11916 11772 11776
for(i in birth){
  if (i>mid){
    print("年輕")
  } else{
    print("老")
  }
}
## [1] "年輕"
## [1] "老"
## [1] "老"
## [1] "年輕"
## [1] "老"
## [1] "老"
## [1] "年輕"
## [1] "老"
## [1] "年輕"
## [1] "年輕"
## [1] "老"
## [1] "老"
## [1] "年輕"
## [1] "老"
## [1] "年輕"
## [1] "年輕"
## [1] "年輕"
## [1] "年輕"
data()
# 叫出women資料集(美國女性的平均身高、體重)
data(women)
# 檢視資料集
head(women)
##   height weight
## 1     58    115
## 2     59    117
## 3     60    120
## 4     61    123
## 5     62    126
## 6     63    129
str(women)
## 'data.frame':    15 obs. of  2 variables:
##  $ height: num  58 59 60 61 62 63 64 65 66 67 ...
##  $ weight: num  115 117 120 123 126 129 132 135 139 142 ...
names(women)
## [1] "height" "weight"
nrow(women)
## [1] 15
tail(women)
##    height weight
## 10     67    142
## 11     68    146
## 12     69    150
## 13     70    154
## 14     71    159
## 15     72    164
# 建立一個物件bmi,計算美國女性的bmi
bmi <- women$weight / (women$height / 100)^2
bmi
##  [1] 341.8549 336.1103 333.3333 330.5563 327.7836 325.0189 322.2656 319.5266
##  [9] 319.1001 316.3288 315.7439 315.0599 314.2857 315.4136 316.3580
# 1. 取bmi整數,且無條件刪去法
floor(bmi)
##  [1] 341 336 333 330 327 325 322 319 319 316 315 315 314 315 316
# 2. 取bmi整數,且無條件進入法
ceiling(bmi)
##  [1] 342 337 334 331 328 326 323 320 320 317 316 316 315 316 317
# 3. 取bmi至小數點第2位,且四捨五入
round(bmi, digits = 2)
##  [1] 341.85 336.11 333.33 330.56 327.78 325.02 322.27 319.53 319.10 316.33
## [11] 315.74 315.06 314.29 315.41 316.36
# 4. 請將iris資料集的花瓣長度,取整數並四捨五入
data(iris)
names(iris)
## [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"
round(iris$Petal.Length,digits=0)
##   [1] 1 1 1 2 1 2 1 2 1 2 2 2 1 1 1 2 1 1 2 2 2 2 1 2 2 2 2 2 1 2 2 2 2 1 2 1 1
##  [38] 1 1 2 1 1 1 2 2 1 2 1 2 1 5 4 5 4 5 4 5 3 5 4 4 4 4 5 4 4 4 4 4 4 5 4 5 5
##  [75] 4 4 5 5 4 4 4 4 4 5 4 4 5 4 4 4 4 5 4 3 4 4 4 4 3 4 6 5 6 6 6 7 4 6 6 6 5
## [112] 5 6 5 5 5 6 7 7 5 6 5 7 5 6 6 5 5 6 6 6 6 6 5 6 6 6 6 5 5 6 5 5 6 6 5 5 5
## [149] 5 5
## 題組二 文字向量函數
# 已建立一個物件leadline為新聞標題、lead為新聞導言
headline <- "【鮭魚改名潮】「張鮭魚之夢」改不回來 李來希喊救孩子:大人高抬貴手"
lead <- c("台灣近日掀起「鮭魚之亂」","台中一位男大生為了壽司店優惠活動",
          "把自己的名字改成「張鮭魚之夢」", "未料改完名後", "男大生發現悲劇已改了3次名",
          "讓他崩潰直呼划不來", "對此","全國公務人員協會前理事長李來希感嘆",
          "「價值觀錯亂下的羔羊」","希望主持政務的大人高抬貴手","讓他回復原狀")
headline
## [1] "【鮭魚改名潮】「張鮭魚之夢」改不回來 李來希喊救孩子:大人高抬貴手"
lead
##  [1] "台灣近日掀起「鮭魚之亂」"           "台中一位男大生為了壽司店優惠活動"  
##  [3] "把自己的名字改成「張鮭魚之夢」"     "未料改完名後"                      
##  [5] "男大生發現悲劇已改了3次名"          "讓他崩潰直呼划不來"                
##  [7] "對此"                               "全國公務人員協會前理事長李來希感嘆"
##  [9] "「價值觀錯亂下的羔羊」"             "希望主持政務的大人高抬貴手"        
## [11] "讓他回復原狀"
# 運用substr函數,擷取標題中的「張鮭魚之夢」5個字
data <- substr(headline, start = 8, stop = 14)
data
## [1] "「張鮭魚之夢」"
# 運用grep函數,搜尋導言中出現幾次鮭魚
data <- grep(lead, pattern = "鮭魚")
length(data)
## [1] 2
data
## [1] 1 3
# 請將導言中,出現鮭魚的句子篩選出來
lead[grep(lead, pattern="鮭魚")]
## [1] "台灣近日掀起「鮭魚之亂」"       "把自己的名字改成「張鮭魚之夢」"
# 運用sub函數,將導言中的「男大生」替換為「軍校生」
data <- sub(lead, pattern="男大生", replacement = "軍校生")
data
##  [1] "台灣近日掀起「鮭魚之亂」"           "台中一位軍校生為了壽司店優惠活動"  
##  [3] "把自己的名字改成「張鮭魚之夢」"     "未料改完名後"                      
##  [5] "軍校生發現悲劇已改了3次名"          "讓他崩潰直呼划不來"                
##  [7] "對此"                               "全國公務人員協會前理事長李來希感嘆"
##  [9] "「價值觀錯亂下的羔羊」"             "希望主持政務的大人高抬貴手"        
## [11] "讓他回復原狀"
# 運用paste函數,將導言的第一句話和標題連結起來,連結的符號為「!!」
paste(lead[1],headline, sep="!!")
## [1] "台灣近日掀起「鮭魚之亂」!!【鮭魚改名潮】「張鮭魚之夢」改不回來 李來希喊救孩子:大人高抬貴手"
# 運用 paste0函數,將導言的第一句話和標題連結起來
paste0(lead[1],headline)
## [1] "台灣近日掀起「鮭魚之亂」【鮭魚改名潮】「張鮭魚之夢」改不回來 李來希喊救孩子:大人高抬貴手"
## 題組三 描述統計函數
# 運用unique函數,找出iris資料集有多少種不同的花萼長度
type <- unique(iris$Sepal.Length)
type
##  [1] 5.1 4.9 4.7 4.6 5.0 5.4 4.4 4.8 4.3 5.8 5.7 5.2 5.5 4.5 5.3 7.0 6.4 6.9 6.5
## [20] 6.3 6.6 5.9 6.0 6.1 5.6 6.7 6.2 6.8 7.1 7.6 7.3 7.2 7.7 7.4 7.9
length(type)
## [1] 35
# 運用mean函數,算出iris花萼寬度的平均
mean(iris$Sepal.Width)
## [1] 3.057333
# 運用sd函數,算出iris花萼寬度的標準差
sd(iris$Sepal.Width)
## [1] 0.4358663
# 運用median函數,找出iris花萼寬度的中位數
median(iris$Sepal.Width)
## [1] 3
# 運用max, min, range函數,找出iris花萼寬度的最大值與最小值的範圍
max(iris$Sepal.Width)
## [1] 4.4
min(iris$Sepal.Width)
## [1] 2
range(iris$Sepal.Width)
## [1] 2.0 4.4
range(iris$Sepal.Width, na.rm = T) #na.rm = T代表排除一個遺漏值
## [1] 2.0 4.4
# 運用sum函數,將所有的花辮長度加總
sum(iris$Petal.Length)
## [1] 563.7
# ### 常見資料資料平台
# 政府資料開放平台:https://data.gov.tw/
# 臺北市資料大平臺:https://data.taipei/#/
# 內政資料開放平台:https://data.moi.gov.tw/MoiOD/default/Index.aspx
# ### 常見資料庫
# 學術調查研究資料庫:https://srda.sinica.edu.tw/index.php
# 傳播調查資料庫:http://www.crctaiwan.nctu.edu.tw/


### 題組一 csv檔資料輸入與輸出
# 請至政府資料開放平台下載「健保特約機構口罩剩餘數量明細清單」的csv檔
# 網址:https://data.gov.tw/dataset/116285
# 將輸入的csv檔案命名為maskdata
#install.packages("tidyverse")
library(readr)
maskdata <- read_csv("maskdata.numbers")
## ! Multiple files in zip: reading ''Index/Document.iwa''
## 
## ── Column specification ────────────────────────────────────────────────────────
## cols(
##   col_character()
## )
## Warning: 64 parsing failures.
## row col  expected        actual               file
##   2               embedded null 'maskdata.numbers'
##   3               embedded null 'maskdata.numbers'
##   4               embedded null 'maskdata.numbers'
##   5  -- 1 columns 2 columns     'maskdata.numbers'
##   6               embedded null 'maskdata.numbers'
## ... ... ......... ............. ..................
## See problems(...) for more details.
# 或是直接檔案的存取網路位址
maskdata <- read_csv("https://data.nhi.gov.tw/Datasets/Download.ashx?rid=A21030000I-D50001-001&l=https://data.nhi.gov.tw/resource/mask/maskdata.csv")
## 
## ── Column specification ────────────────────────────────────────────────────────
## cols(
##   醫事機構代碼 = col_character(),
##   醫事機構名稱 = col_character(),
##   醫事機構地址 = col_character(),
##   醫事機構電話 = col_character(),
##   成人口罩剩餘數 = col_double(),
##   兒童口罩剩餘數 = col_double(),
##   來源資料時間 = col_character()
## )
# 檢視資料
#View(maskdata)
names(maskdata)
## [1] "醫事機構代碼"   "醫事機構名稱"   "醫事機構地址"   "醫事機構電話"  
## [5] "成人口罩剩餘數" "兒童口罩剩餘數" "來源資料時間"
nrow(maskdata)
## [1] 5139
# 2. 建一個機構名稱、地址、成人口罩、小孩口罩的新檔案,
# ,命名為mask1並輸出至目前的資料夾

# 先命名、並篩選需要的欄位


# 3. 檢視成人口罩和兒童口罩數量的多寡?


# 4. 超過5000個成人口罩的機構有哪些? 物件名稱為mask5000


# 5. 將超過5000個成人口罩的機構輸出為csv檔,命名為mask5000



## 課本的方法容易有錯誤碼、中文字為亂碼
# data1 <- read.table("service.csv", header = TRUE, sep = ",")
# View(data1) #全部中文字是亂碼
# data2 <-read.csv("service.csv",header = TRUE, encoding = "UTF-8")
# View(data2) #欄位名稱為亂碼
# data3 <-read.csv("http://www.mnd.gov.tw/NewUpload/202102/憲兵指揮部國軍官兵營外急難服務中心設置地點一覽表_1100219_011059.csv")
# View(data3) #欄位名稱為亂碼
# str(data3)
# # # R讀取中文檔案產生亂碼等錯誤問題 http://rwepa.blogspot.com/2017/09/ansifileencoding.html
# # 此檔案可成功輸入: https://data.gov.tw/dataset/136470
# data2 <-read.csv("service.csv",header = TRUE, encoding = "UTF-8")
# View(data2) #欄位名稱為亂碼