我正在尝试创建一个变量,指示交易完成的会计年度的四分之一。因此,我需要自定义季度变量的开始和结束日期。
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""))
有关如何重新编码的任何建议?
答案 0 :(得分:0)
有几个问题。首先,您在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