2016-05-25 40 views
0

我试图根据帐户总结DATE的最近30天列INDICATOR中的值。我的表达式是:Sum([INDICATOR])over(Intersect([id],LastPeriods(30,[DATE]))),但结果并不准确。Spotfire - 总和()超过

任何帮助表示赞赏。下面

样本数据:

DATE 30DAYSBACK ID INDICATOR RUNNING30 EXPECTED 
    3/2/16 2/1/16 ABC 1 3 3 
    3/2/16 2/1/16 ABC 1 3 3 
    3/2/16 2/1/16 ABC 1 3 3 
    3/7/16 2/6/16 ABC 1 7 7 
    3/7/16 2/6/16 ABC 1 7 7 
    3/7/16 2/6/16 ABC 1 7 7 
    3/7/16 2/6/16 ABC 1 7 7 
    3/8/16 2/7/16 ABC 1 10 10 
    3/8/16 2/7/16 ABC 1 10 10 
    3/8/16 2/7/16 ABC 1 10 10 
    3/10/16 2/9/16 ABC 1 12 12 
    3/10/16 2/9/16 ABC 1 12 12 
    3/14/16 2/13/16 ABC 1 13 13 
    3/15/16 2/14/16 ABC 1 14 14 
    3/16/16 2/15/16 ABC 1 15 15 
    3/21/16 2/20/16 ABC 1 16 16 
    3/22/16 2/21/16 ABC 1 17 17 
    3/23/16 2/22/16 ABC 1 19 19 
    3/23/16 2/22/16 ABC 1 19 19 
    3/25/16 2/24/16 ABC 1 20 20 
    3/29/16 2/28/16 ABC 1 22 22 
    3/29/16 2/28/16 ABC 1 22 22 
    3/30/16 2/29/16 ABC 1 27 27 
    3/30/16 2/29/16 ABC 1 27 27 
    3/30/16 2/29/16 ABC 1 27 27 
    3/30/16 2/29/16 ABC 1 27 27 
    3/30/16 2/29/16 ABC 1 27 27 
    3/31/16 3/1/16 ABC 1 29 29 
    3/31/16 3/1/16 ABC 1 29 29 
    4/1/16 3/2/16 ABC 1 31 31 
    4/1/16 3/2/16 ABC 1 31 31 
    4/4/16 3/5/16 ABC 1 32 29 
    4/5/16 3/6/16 ABC 1 33 30 
    4/13/16 3/14/16 ABC 1 34 27 
    4/13/16 3/14/16 ABC 1 34 27 
    4/13/16 3/14/16 ABC 1 34 27 
    4/13/16 3/14/16 ABC 1 34 27 
    4/15/16 3/16/16 ABC 1 35 24 
    4/20/16 3/21/16 ABC 1 31 26 
    4/20/16 3/21/16 ABC 1 31 26 
    4/20/16 3/21/16 ABC 1 31 26 
    4/25/16 3/26/16 ABC 1 31 25 
    4/25/16 3/26/16 ABC 1 31 25 
    4/25/16 3/26/16 ABC 1 31 25 
    4/26/16 3/27/16 ABC 1 31 26 
    4/27/16 3/28/16 ABC 1 34 29 
    4/27/16 3/28/16 ABC 1 34 29 
    4/27/16 3/28/16 ABC 1 34 29 
    4/27/16 3/28/16 ABC 1 34 29 
    4/28/16 3/29/16 ABC 1 35 30 
+1

你可以附加一个样本数据集? – scsimon

+0

感谢您的数据集,但它缺少'[INDICATOR]'列 – scsimon

+0

对不起! [INDICATOR]实际上只是1的值。 (以上错误标记...被视为'IDENTIFIER'。) –

回答

0

我wan't能够确定内Spotfire中的合适的解决方案。但是,我能够编写一些R代码,允许将Date和Indicator列传递给它,对过去30天的指标进行求和,然后将其作为列返回。

下面是代码:

record.date <-as.Date(date.column, "%m/%d/%Y") 
indicator.vector <- indicator.column 

num.entry <- length(record.date) 
running.thirty <- vector(length=num.entry) 
count <- 0 

for(i in 1:num.entry){ 
    date.test <- record.date[i] 
    for(j in 1:num.entry){ 
    if(record.date[j] >= date.test-30){ 
     if(record.date[j] <= date.test){ 
     count <- count + indicator.vector[j] 
     } 
    } 
    } 
    running.thirty[i] <- count 
    count <- 0 
} 

output<-running.thirty 

使用工具>>注册数据功能

(1)将脚本

(2)创建两个输入参数:

input parameters

(3)创建输出参数:

output parameter

注:我觉得有近你的数据集的末尾您的期望值一些错误。