2017-07-19 89 views
1

我正在嘗試創建一個變量,指出財務年度某個事務已完成的哪個季度。因此,我需要定製四分之一變量的開始和結束日期。定製R上的季度日期

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

也許這個頁面將是有益的[https://stackoverflow.com/questions/33877714/assigning-dates-to-fiscal-year](https://stackoverflow.com/questions/ 33877714 /分配日期到財年) –

回答

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 
+1

這很有幫助。非常感謝@ed_sans! –