【问题标题】:Customize quarterly dates on R在 R 上自定义季度日期
【发布时间】:2017-07-19 21:38:42
【问题描述】:

我正在尝试创建一个变量来指示交易完成的财政年度的哪个季度。因此,我需要自定义季度变量的开始和结束日期。

dt <- data.table(
date = c("2016-09-26", "2016-10-14", "2017-01-09"),
value = c(42, 87, 102),
location = c("a","b","c"))
dt$date <- as.Date(dt$date, "%m/%d/%Y")

我曾尝试使用此代码,但它返回“中断中的无效规范”...

dt$quarter <- cut(dt$date,
                     breaks=c(-Inf, "2016-07-26", "2016-12-31", Inf),
                     labels=c("Q3-2016","Q4-2016","Q1-2017"")) 

关于如何重新编码的任何建议?

【问题讨论】:

标签: r date recode


【解决方案1】:

有几个问题。首先,您在as.Date 中使用的格式不正确(“%Y-%m-%d”而不是“%m/%d/%Y”)。然后是您指定的休息时间。 怎么样:

library(data.table)
library(lubridate)

dt <- data.table(
  date = c("2016-09-26", "2016-10-14", "2017-01-09"),
  value = c(42, 87, 102),
  location = c("a","b","c"))
dt$date <- as.Date(dt$date, "%Y-%m-%d")

dt$quarter <- cut(dt$date,
                  breaks=ymd(c("2010-01-01", "2016-07-26", "2016-12-31", "2020-01-01")),
                  labels=c("Q3-2016","Q4-2016","Q1-2017")) 


         date value location quarter
1: 2016-09-26    42        a Q4-2016
2: 2016-10-14    87        b Q4-2016
3: 2017-01-09   102        c Q1-2017

【讨论】:

  • 这很有帮助。非常感谢@ed_sans!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多