Spotfire-Sum () over

Я пытаюсь суммировать значения в индикаторе столбца за последние 30 дней с даты по счету.

Мое выражение: Sum ([INDICATOR]) over (Intersect ([id],LastPeriods (30,[DATE])) but the results are not accurate.

Любая помощь ценится.

Пример данных ниже:

    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 ответ

  1. Я не могу определить подходящее решение в 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) Создайте два входных параметра:

    входной параметр

    (3) Создайте выходной параметр:

    выходной параметр

    Примечание: Я думаю, что есть некоторые ошибки в ожидаемых значениях в конце набора данных.