我想得到以下字串序列作為結果:
"2016-01" "2016-02" "2016-03" "2016-04" "2016-05" "2016-06" "2016-07" "2016-08" "2016-09" "2016-10" "2016-11" "2016-12" "2017-01" "2017-02" "2017-03" "2017-04" "2017-05" "2017-06" "2017-07" "2017-08" "2017-09" "2017-10" "2017-11" "2017-12" "2018-01" "2018-02" "2018-03" "2018-04" "2018-05" "2018-06" "2018-07" "2018-08" "2018-09" "2018-10" "2018-11" "2018-12" "2019-01" "2019-02" "2019-03" "2019-04" "2019-05" "2019-06" "2019-07""2019-08" "2019-09" "2019-10" "2019-11" "2019-12" "2020-01" "2020-02" "2020-03" "2020-04" "2020-05" "2020-06" "2020-07" "2020-08" "2020-09" "2020-10" "2020-11" "2020-12"
我寫了以下代碼:
c(sprintf("2016-d", 1:12),
sprintf("2017-d", 1:12),
sprintf("2018-d", 1:12),
sprintf("2019-d", 1:12),
sprintf("2020-d", 1:12))
還有其他更短更優雅的解決方案嗎?例如,任何建議將sprintf?的第一部分結合起來。
uj5u.com熱心網友回復:
使用基礎 R,嘗試:
seq.Date(from = as.Date("2016-01-01"), to = as.Date("2020-12-01"), by = "1 month") |> format("%Y-%m")
[1] "2016-01" "2016-02" "2016-03" "2016-04" "2016-05" "2016-06" "2016-07"
[8] "2016-08" "2016-09" "2016-10" "2016-11" "2016-12" "2017-01" "2017-02"
[15] "2017-03" "2017-04" "2017-05" "2017-06" "2017-07" "2017-08" "2017-09"
[22] "2017-10" "2017-11" "2017-12" "2018-01" "2018-02" "2018-03" "2018-04"
[29] "2018-05" "2018-06" "2018-07" "2018-08" "2018-09" "2018-10" "2018-11"
[36] "2018-12" "2019-01" "2019-02" "2019-03" "2019-04" "2019-05" "2019-06"
[43] "2019-07" "2019-08" "2019-09" "2019-10" "2019-11" "2019-12" "2020-01"
[50] "2020-02" "2020-03" "2020-04" "2020-05" "2020-06" "2020-07" "2020-08"
[57] "2020-09" "2020-10" "2020-11" "2020-12"
uj5u.com熱心網友回復:
1)這將給出指示的字符向量或僅使用 ym 來獲取 yearmon 類向量,這可能更方便,因為它在內部表示為 year fraction 其中分數為 0 表示 1 月,1/12 表示 2 月,...,11 /12 表示 Dec,因此可以通過相關方式進行操作,例如將其用作繪圖的 X 軸。
library(zoo)
ym <- seq(as.yearmon("2016-01"), as.yearmon("2020-12"), 1/12)
format(ym, "%Y-%m")
形成 ym 的另一種方法是:
ym <- ts(start = 2006, end = c(2012, 12), freq = 12) |>
time() |>
as.yearmon()
2)這也適用于僅使用基礎 R。您可能更喜歡使用 d,因為它也可以用于繪圖。
d <- seq(as.Date("2016-01-01"), as.Date("2020-12-01"), by = "month")
format(d, "%Y-%m")
3)這個基本解決方案更短,但缺乏使用 Date 或 yearmon 類的靈活性。
sprintf("%d-d", rep(2006:2012, each = 12), 1:12)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/328198.html
標籤:r
下一篇:在Go模板的回圈中呼叫子模板
