1. 請至 ceiba 上下載農作物交易量的資料,並完成以下問題:

    Notice: 讀檔、資料篩選、畫圖

    • 該資料由 2022 筆記錄和 11 個變數構成,每個作物有自己的作物代號。已知百香果–改良種的作物代號為 51,請整理出一個僅有百香果–改良種的資料,並存成變數subdat(10%)
    # 讀檔
    dat_csv <- read.csv("交易量.csv")
    dat_table <- read.table("交易量.csv", sep = ",", header = T) #因為csv是逗號分隔且該檔案有標題,所以sep和header都要打
    #dat_filechoose = read.csv(file.choose())
    
    head(dat_csv)[3:10] #print出資料的前6個row,幾個column
    ##   作物代號      作物名稱 市場代號 市場名稱  上價  中價  下價 平均價
    ## 1       11          椰子      104   台北二  37.2  30.6  18.8   29.6
    ## 2      129 椰子-進口剝殼      104   台北二  70.0  70.0  70.0   70.0
    ## 3      459     草莓-進口      104   台北二 222.3 222.2 222.2  222.2
    ## 4      469 藍莓-進口藍莓      104   台北二 466.5 466.5 466.5  466.5
    ## 5       50   百香果-其他      104   台北二  88.6  49.8  27.5   53.1
    ## 6       51 百香果-改良種      104   台北二 129.6  79.6  27.7   79.2
     #判斷2022個紀錄裡面,哪幾筆紀錄的作物代號是51,得到的是boolean值
    dat_csv$作物代號==51
    #[row, column]利用上一個判斷的程式碼,選出作物代號51的row和所有的column;row的位置放條件判斷、column的位置維持空白(全選)
    # method 1 條件判斷
    subdat = dat_csv[dat_csv$作物代號==51,] 
    #版面問題 取column 1~5
    head(subdat)[1:5]
    ##       交易日期 種類代碼 作物代號      作物名稱 市場代號
    ## 6    110.06.23      N05       51 百香果-改良種      104
    ## 269  110.06.23      N05       51 百香果-改良種      109
    ## 570  110.06.23      N05       51 百香果-改良種      220
    ## 802  110.06.23      N05       51 百香果-改良種      241
    ## 1042 110.06.23      N05       51 百香果-改良種      260
    ## 1083 110.06.23      N05       51 百香果-改良種      338
    # method 2 土法煉鋼
    whatIwant = c(6,269,570,802,1042,1083,1242,1453,1573,1603)
    subdat = dat_csv[whatIwant,]
    head(subdat)[1:5]
    ##       交易日期 種類代碼 作物代號      作物名稱 市場代號
    ## 6    110.06.23      N05       51 百香果-改良種      104
    ## 269  110.06.23      N05       51 百香果-改良種      109
    ## 570  110.06.23      N05       51 百香果-改良種      220
    ## 802  110.06.23      N05       51 百香果-改良種      241
    ## 1042 110.06.23      N05       51 百香果-改良種      260
    ## 1083 110.06.23      N05       51 百香果-改良種      338
    # method 3 很多人嘗試的
    cand1 = dat_csv[6,]
    cand2 = dat_csv[269,]
    cand3 = dat_csv[570,]
    cand4 = dat_csv[802,]
    cand5 = dat_csv[1042,]
    cand6 = dat_csv[1083,]
    cand7 = dat_csv[1242,]
    cand8 = dat_csv[1453,]
    cand9 = dat_csv[1573,]
    cand10 = dat_csv[1603,]
    cand1[1:5];dim(cand1)
    ##    交易日期 種類代碼 作物代號      作物名稱 市場代號
    ## 6 110.06.23      N05       51 百香果-改良種      104
    ## [1]  1 11
    # 上面每一個candX一個1x11的dataframe,用rbind可以使他們 
    subdat = rbind(cand1,cand2,cand3,cand4,cand5,cand6,cand7,cand8,cand9,cand10)
    head(subdat)[1:5]
    ##       交易日期 種類代碼 作物代號      作物名稱 市場代號
    ## 6    110.06.23      N05       51 百香果-改良種      104
    ## 269  110.06.23      N05       51 百香果-改良種      109
    ## 570  110.06.23      N05       51 百香果-改良種      220
    ## 802  110.06.23      N05       51 百香果-改良種      241
    ## 1042 110.06.23      N05       51 百香果-改良種      260
    ## 1083 110.06.23      N05       51 百香果-改良種      338
    • 根據上述所得到的百香果–改良種的資料,在110.6.23平均價的平均、變異數、最大值和最小值為何?請在程式碼用#標明所要計算的統計值(10%)
    #平均數
    mean(subdat$平均價)
    ## [1] 53.596
    #變異數
    var(subdat$平均價)
    ## [1] 455.3544
    #最大值
    max(subdat$平均價)
    ## [1] 85
    #最小值
    min(subdat$平均價)
    ## [1] 27
    • 請繪製百香果-改良種在各個市場的交易量長條圖,橫軸為市場名稱、縱軸為交易量,並標明此長條圖的標題和X、Y軸(10%)
    # family="STKaiti" 是給MacOS當畫圖打中文出現框框時的解決辦法
    barplot(subdat$交易量, names.arg = subdat$市場名稱, main = "百香果改良種市場交易量", xlab = "市場名稱", ylab = "交易量", family="STKaiti") 

    • 在該資料中,作物的交易市場都不太相同,這裡出現了14個市場名稱,請問在台北二進行交易的筆數有多少?(10%)
    # 列表
    table(dat_csv$市場名稱)
    ## 
    ## 板橋區 豐原區 鳳山區 高雄市 嘉義市 南投市 屏東市 三重區 台北二 台北一 台中市 
    ##    229     73     91    215     29     12    116    244    263    305    215 
    ##   桃農 溪湖鎮 宜蘭市 
    ##    157     34     39
    # TRUE=1, FALSE=0
    sum(dat_csv$市場名稱=="台北二")
    ## [1] 263
  2. 繪製\({\mu}\) = 55, \({\sigma}\) = 12的常態分佈圖(10%)

    x = seq(1,100,by=0.01)
    plot(x, dnorm(x,mean = 55, sd=12), type = "l")

    #
    hist(rnorm(100000, 55,12))

  3. 計算下列式子:
    • \({sin(1.4 \pi)}+342^{ln6}\)(10%)

      Notice: log以e為底

    sin(1.4*pi)+342**(log(6))
    ## [1] 34701.91
    • 將1~100的數字產生一條奇數序列並加總(10%)

      Notice: seq()的用法、sum()的功能

    sum(seq(1,100,by=2))
    ## [1] 2500
    • 1!+2!+3!…+20!(10%)

      Notice: 向量的運算

    factorial(1:20)
    ##  [1] 1.000000e+00 2.000000e+00 6.000000e+00 2.400000e+01 1.200000e+02
    ##  [6] 7.200000e+02 5.040000e+03 4.032000e+04 3.628800e+05 3.628800e+06
    ## [11] 3.991680e+07 4.790016e+08 6.227021e+09 8.717829e+10 1.307674e+12
    ## [16] 2.092279e+13 3.556874e+14 6.402374e+15 1.216451e+17 2.432902e+18
    sum(factorial(1:20))
    ## [1] 2.561327e+18
    # 全部打出來
    #factorial(1)+factorial(2)+factorial(3)+...+factorial(20)
  4. 請製作一個判斷調分的函數,假設所有分數都在0~100分之間,無須考慮key錯分數的可能性,設定輸入全班成績向量時,當全班成績平均大於等於60的時候,就保持原樣;當平均大於36且小於60的時候,分數開根號後乘以10;2;當全班平均小於36時,分數除以2後加50。(20%)

    Notice: function()的用法、if-else流程、()和{}大家容易忘記

    adjust = function(score){
      if(mean(score)>=60){
        return(score)
      }else if(mean(score)>=36){
        return(sqrt(score)*10)
      }else{
        return((score/2)+50)
      }
    }
    score = c(10,30,60,60,88,40,87,90,10,33,55,60)
    adjust(score)
    ##  [1] 31.62278 54.77226 77.45967 77.45967 93.80832 63.24555 93.27379 94.86833
    ##  [9] 31.62278 57.44563 74.16198 77.45967