逐年对数据进行分类

时间:2019-01-10 18:23:13

标签: r date spotfire unpivot

我有一些项目的数据,这些数据应报告一定程度的年度节省量。 从计划开始的月份到12个月后,我需要将年度和每月会计数据分开。为简单起见,每个月的节省金额仅为每年节省的费用除以12。

我需要在Tibco.Spotfire或R中执行此操作。

例如:我需要从这个开始:

enter image description here

对此:

enter image description here

1 个答案:

答案 0 :(得分:0)

以下解决方案应该起作用。它需要data.tablelubridate。在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