Разбить данные по годам и месяцам - PullRequest
0 голосов
/ 10 января 2019

У меня есть данные из проектов, которые должны сообщать о годовой экономии определенной суммы. Мне нужно отделить данные от годовой к месячной отчетности от месяца, с которого началась инициатива, до 12 месяцев спустя. Сумма сбережений каждого месяца - это всего лишь годовая экономия, деленная на 12 для простоты.

Мне нужно сделать это либо в Tibco.Spotfire, либо в R.

Например: мне нужно перейти от этого:

enter image description here

к этому:

enter image description here

1 Ответ

0 голосов
/ 10 января 2019

Следующее решение должно работать. Требуется data.table и lubridate. В Spotfire вы можете установить оба из них, используя Инструменты -> Инструменты TERR -> Управление пакетами. Настройка функции данных в Spotfire имеет множество ресурсов (https://datashoptalk.com/spotfire-data-functions-terr-basics/)

library(lubridate)
library(data.table)
dt <- data.table(Initiative = c('A', 'B') ,
                 start_date = c(as.Date('2017/1/1'), as.Date('2015/5/1')),
                 Savings = c(240, 120)
                 )

new_dt <- dt[, .( 
       Date = seq.Date(start_date, as.Date(start_date %m+% months(11)), by = 'month'),
       Monthly_Savings = Savings / 12), by = Initiative]

new_dt

    Initiative       Date Monthly_Savings
 1:          A 2017-01-01              20
 2:          A 2017-02-01              20
 3:          A 2017-03-01              20
 4:          A 2017-04-01              20
 5:          A 2017-05-01              20
 6:          A 2017-06-01              20
 7:          A 2017-07-01              20
 8:          A 2017-08-01              20
 9:          A 2017-09-01              20
10:          A 2017-10-01              20
11:          A 2017-11-01              20
12:          A 2017-12-01              20
13:          B 2015-05-01              10
14:          B 2015-06-01              10
...