# your code goes here# 已知 x 和 g.date 是相互對應的二個向量
x <- 1:365
g.date <-
seq(as.Date("2018-01-01"), as.Date("2018-12-31"), by = "day")
# 先對 x 和 g.date 重新排序(仍保留對應關係),後面會比較方便,也比較保險
x <- x[order(g.date)]
g.date <- g.date[order(g.date)]
# 取得月份
g.
month <- strftime(g.
date, format
= "%Y-%m")
# 結果的容器
res <- vector("numeric", length(unique(g.month)))
names(res) <- unique(g.month)
# 用 2 層 for loop 得到和 tapply(x, g.month, mean) 一樣的結果
# 猜測與模仿 AndrewShi@ptt.cc 的想法
# https://w...content-available-to-author-only...t.cc/bbs/R_Language/M.1542102427.A.E65.html
for (j in unique(g.month)) {
# j 走訪每個月份,共12圈
var.Sum <- 0
var.N <- 0L
for (i in 1:length(g.date)) {
# i 走訪每日,共365圈
if (strftime(g.
date[i
], format
= "%Y-%m") == j
) { # 若本日與 j 同,則累計總和與個數
var.Sum <- var.Sum + x[i]
var.N <- var.N + 1L
}
}
# 一個 j 結算一次平均
res[which(names(res) == j)] <- var.Sum / var.N
}
print(res)
print(tapply(x, g.month, mean))
IyB5b3VyIGNvZGUgZ29lcyBoZXJlIyDlt7Lnn6UgeCDlkowgZy5kYXRlIOaYr+ebuOS6kuWwjeaHieeahOS6jOWAi+WQkemHjwp4IDwtIDE6MzY1CmcuZGF0ZSA8LQogIHNlcShhcy5EYXRlKCIyMDE4LTAxLTAxIiksIGFzLkRhdGUoIjIwMTgtMTItMzEiKSwgYnkgPSAiZGF5IikKCiMg5YWI5bCNIHgg5ZKMIGcuZGF0ZSDph43mlrDmjpLluo/vvIjku43kv53nlZnlsI3mh4npl5zkv4LvvInvvIzlvozpnaLmnIPmr5TovIPmlrnkvr/vvIzkuZ/mr5TovIPkv53pmqoKeCA8LSB4W29yZGVyKGcuZGF0ZSldCmcuZGF0ZSA8LSBnLmRhdGVbb3JkZXIoZy5kYXRlKV0KCiMg5Y+W5b6X5pyI5Lu9CmcubW9udGggPC0gc3RyZnRpbWUoZy5kYXRlLCBmb3JtYXQgPSAiJVktJW0iKQoKIyDntZDmnpznmoTlrrnlmagKcmVzIDwtIHZlY3RvcigibnVtZXJpYyIsIGxlbmd0aCh1bmlxdWUoZy5tb250aCkpKQpuYW1lcyhyZXMpIDwtIHVuaXF1ZShnLm1vbnRoKQoKIyDnlKggMiDlsaQgZm9yIGxvb3Ag5b6X5Yiw5ZKMIHRhcHBseSh4LCBnLm1vbnRoLCBtZWFuKSDkuIDmqKPnmoTntZDmnpwKIyDnjJzmuKzoiIfmqKHku78gQW5kcmV3U2hpQHB0dC5jYyDnmoTmg7Pms5UKIyBodHRwczovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnQuY2MvYmJzL1JfTGFuZ3VhZ2UvTS4xNTQyMTAyNDI3LkEuRTY1Lmh0bWwKZm9yIChqIGluIHVuaXF1ZShnLm1vbnRoKSkgewogICMgaiDotbDoqKrmr4/lgIvmnIjku73vvIzlhbExMuWciAogIHZhci5TdW0gPC0gMAogIHZhci5OIDwtIDBMCgogIGZvciAoaSBpbiAxOmxlbmd0aChnLmRhdGUpKSB7CiAgICAjIGkg6LWw6Kiq5q+P5pel77yM5YWxMzY15ZyICiAgCiAgICBpZiAoc3RyZnRpbWUoZy5kYXRlW2ldLCBmb3JtYXQgPSAiJVktJW0iKSA9PSBqKSB7CiAgICAgICMg6Iul5pys5pel6IiHIGog5ZCM77yM5YmH57Sv6KiI57i95ZKM6IiH5YCL5pW4CiAgICAgIHZhci5TdW0gPC0gdmFyLlN1bSArIHhbaV0KICAgICAgdmFyLk4gPC0gdmFyLk4gKyAxTAogICAgfQogICAgCiAgfQoKICAjIOS4gOWAiyBqIOe1kOeul+S4gOasoeW5s+WdhwogIHJlc1t3aGljaChuYW1lcyhyZXMpID09IGopXSA8LSB2YXIuU3VtIC8gdmFyLk4KfQoKcHJpbnQocmVzKQpwcmludCh0YXBwbHkoeCwgZy5tb250aCwgbWVhbikpCg==