【发布时间】:2014-09-16 18:57:58
【问题描述】:
在 R 中,可以将 POSIXlt 日期时间对象格式化为月份:
format(Sys.time(), format='%Y-%m')
有没有办法对季节或 3 个月组(DJF、MAM、JJA、SON)做同样的事情?这些划分在气候学和生态科学中确实很常见,如果有一种巧妙的方法可以像几个月一样快速格式化它们,那就太好了。显然 DJF 超过 2 年,但出于目的或这个问题,这并不重要 - 只需始终将它们推入任一年,(或者,理想情况下,能够指定它们进入哪一年会很好) .
我将输出用作by() 的索引,因此输出格式并不重要,只要每年/季节是唯一的即可。
编辑:示例数据:
dates <- Sys.Date()+seq(1,380, by=35)
dates <- structure(c(16277, 16312, 16347, 16382, 16417, 16452, 16487,
16522, 16557, 16592, 16627), class = "Date")
dates
#[1] "2014-07-26" "2014-08-30" "2014-10-04" "2014-11-08" "2014-12-13"
# "2015-01-17" "2015-02-21" "2015-03-28" "2015-05-02" "2015-06-06" "2015-07-11"
应该导致:
c("2014-JJA", "2014-JJA", "2014-SON", "2014-SON", "2015-DJF", "2015-DJF",
"2015-DJF", "2015-MAM", "2015-MAM", "2015-JJA", "2015-JJA")
但“2015-DJF”也可能是“2014-DJF”。此外,输出的形式无关紧要 - “2104q4 或 201404 也可以。
【问题讨论】:
-
Here's 相关问答。
-
如果Q1是DJF等,则转换为
"yearmon"类,加一个月转换为"yearqtr"类:library(zoo); format(as.yearqtr(as.yearmon(Sys.time())+1/12))。如果您想要不同的格式,可以使用格式字符串,例如format(as.yearqtr(as.yearmon(Sys.time())+1/12), "%Y-%q")
标签: r datetime datetime-format