請至 ceiba 上下載農作物交易量的資料,並完成以下問題:
Notice: 讀檔、資料篩選、畫圖
# 讀檔
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
#平均數
mean(subdat$平均價)
## [1] 53.596
#變異數
var(subdat$平均價)
## [1] 455.3544
#最大值
max(subdat$平均價)
## [1] 85
#最小值
min(subdat$平均價)
## [1] 27
# family="STKaiti" 是給MacOS當畫圖打中文出現框框時的解決辦法
barplot(subdat$交易量, names.arg = subdat$市場名稱, main = "百香果改良種市場交易量", xlab = "市場名稱", ylab = "交易量", family="STKaiti")
# 列表
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繪製\({\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))
\({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)請製作一個判斷調分的函數,假設所有分數都在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