2017-07-19 9 views
1

J'essaie de créer une variable qui indique quel trimestre de l'exercice financier une transaction a été complétée. Ainsi, j'ai besoin de personnaliser les dates de début et de fin de la variable quart.Personnaliser les dates trimestrielles sur 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") 

J'ai essayé d'utiliser ce code, mais il retourne "spécification invalide dans les pauses" ...

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

Toutes les suggestions sur comment puis-je recoder cela?

+0

Peut-être que cette page serait utile [https://stackoverflow.com/questions/33877714/assigning-dates-to-fiscal-year](https://stackoverflow.com/questions/ 33877714/assigning-dates-to-exercise-year) –

Répondre

0

Il existe plusieurs problèmes. Premièrement, le format que vous utilisez dans as.Date est incorrect ("% Y-% m-% d" plutôt que "% m /% d /% Y"). Ensuite, les pauses que vous avez spécifiées. Que diriez-vous:

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

Cela nous a été utile. Merci beaucoup @ed_sans! –