##R語言資料分析期中考:
##輸入學號: 209    和名字:柏荃
##壹、自建資料與圖表(請見社團範例)
#(1-1)建立一個data frame,包括brand品牌與market_share市站率
brand <-c("Samsung","Apple","oppo")#第一列
market_share <- c(31.7,22.8,9.3)#第二列
data<-data.frame(brand,market_share)#依序建立圖表
#(1-2)畫長條圖
barplot(sort(market_share,decreasing = TRUE),#排序大到小
        names.arg =c("Samsung","Apple","oppo"),#項目名稱
        main = "Global Smartphone Market Share",#標題
        sub="by YPC",#小標題
        xlab = "brand",#x標題
        ylab = "market_share",#y標題
        col =c(57:59))#顏色

#貳、比較gender 性別與lunch 營養午餐類型
#讀入外部資料
sp <- read.csv(file = "StudentsPerformance.csv", stringsAsFactors = TRUE)
summary(sp)
##     gender    race.ethnicity     parental.level.of.education          lunch    
##  female:518   group A: 89    associate's degree:222          free/reduced:355  
##  male  :482   group B:190    bachelor's degree :118          standard    :645  
##               group C:319    high school       :196                            
##               group D:262    master's degree   : 59                            
##               group E:140    some college      :226                            
##                              some high school  :179                            
##  test.preparation.course   math.score     reading.score    writing.score   
##  completed:358           Min.   :  0.00   Min.   : 17.00   Min.   : 10.00  
##  none     :642           1st Qu.: 57.00   1st Qu.: 59.00   1st Qu.: 57.75  
##                          Median : 66.00   Median : 70.00   Median : 69.00  
##                          Mean   : 66.09   Mean   : 69.17   Mean   : 68.05  
##                          3rd Qu.: 77.00   3rd Qu.: 79.00   3rd Qu.: 79.00  
##                          Max.   :100.00   Max.   :100.00   Max.   :100.00
#欄位名稱------------------------------------------
# gender 性別
# race.ethnicity 種族分群
# parental.level.of.education  父母教育程度
# lunch 營養午餐類型(free/reduced免費或減免餐費,standard為一般類別)
# test.preparation.course
# math.score 數學成績
# reading.score 閱讀成績
# writing.score 寫作成績
#(2-1)計算不同gender 性別與lunch 營養午餐人數的比例(交叉分析表)
t <- table(sp$gender,sp$lunch)
t
##         
##          free/reduced standard
##   female          189      329
##   male            166      316
p.t <- prop.table(t)
p.t
##         
##          free/reduced standard
##   female        0.189    0.329
##   male          0.166    0.316
p.t <- p.t*100
p.t
##         
##          free/reduced standard
##   female         18.9     32.9
##   male           16.6     31.6
#(2-2)呈現gender 性別與lunch 營養午餐人數的圖表
rownames(p.t)
## [1] "female" "male"
label <- rownames(p.t)
label
## [1] "female" "male"
barplot(p.t, 
        beside =TRUE , 
        legend.text =label, 
        col =c(3,9) )

#參、math.score 數學成績的直方圖與盒狀圖
#直方圖
label <- rownames("math.score")
hist(sp$math.score, 
     col=c(98:113),
     main = "math.score",
     sub = "Harry")#直方圖

#盒狀圖
boxplot(sp$math.score, 
        col=c(98),
        main = "math.score",
        sub = "Harry")#盒鬚圖

#肆、math.score 數學成績的最大值、最小值、平均數、中位數、標準差
max(sp$math.score)#算最大值
## [1] 100
min(sp$math.score)#算最小值
## [1] 0
mean(sp$math.score)#算平均數
## [1] 66.089
median(sp$math.score)#算中位數
## [1] 66
sd(sp$math.score)#算標準差
## [1] 15.16308
#五、呈現以下兩組關係的散佈圖
#(1)math.score 數學成績與與writing.score 寫作成績
#(2)reading.score 閱讀成績與writing.score 寫作成績
par(mfrow = c(1,2))
plot(sp$math.score, 
     xlab="math.score",
     col=c(77),
     sp$writing.score,
     ylab="writing.score",
     main = "test",
     sub = "Harry")

#(2)Petal.Length與Petal.Width
plot(sp$reading.score, 
     xlab="reading.score",
     col=c(1),
     sp$writing.score,
     ylab="writing.score",
     main = "test",
     sub = "Harry")

#六、計算以下兩組關係的相關係數
#(1)reading.score 閱讀成績與math.score 數學成績
#(2)writing.score 寫作成績與math.score 數學成績
cor(sp$reading.score, sp$math.score)
## [1] 0.8175797
cor(sp$writing.score, sp$math.score)
## [1] 0.802642
#七、計算不同gender 性別的math.score 數學成績並畫長條圖
par(mfrow = c(1,1))
x<-tapply(sp$math.score,sp$gender,mean)
x
##   female     male 
## 63.63320 68.72822
barplot(sort(x,decreasing = TRUE),
        x,main = "gender",
        xlab="gender",
        ylab="grade",
        beside =TRUE ,
        col =c(8:5),
        sub = "Harry")