У меня есть три вектора столбцов (300x1) Date, VariousA, Amount , и я хочу выполнить вычисление для каждой строки векторов моего столбца в зависимости от вектора datetime (Date). Если дата не меняется, сумма в расчете также не должна меняться. Если дата изменится, я хочу суммировать все результаты расчетов за предыдущую дату и прибавить сумму к сумме за предыдущую дату.
Следующий пример основан на таблице ниже:
Во-первых, Amount-Vector содержит значение только в первой строке ( 100 ). Расчет дает 60 . Так как дата в следующей строке остается прежней, сумма также остается неизменной - расчет дает 30 . Поскольку дата в строке 3 изменяется, я хочу изменить свою сумму. Сумма результатов за предыдущую дату составляет 90 , которая должна быть добавлена к сумме предыдущей даты. Таким образом, новая сумма в строке 3 составляет 190 , и в результате расчета получается 85,5 , который необходимо добавить к 190 в следующей строке, поскольку дата в строке 4 снова меняется, и так далее ...
Надеюсь, это стало ясно. Кто-нибудь может помочь?
ОГРОМНОЕ СПАСИБО!
| Date | VariousA | Amount | Result | HelpColumn |
|------------- |---------- |-------- |-------- |-------------- |
| 28-Jul-2001 | 0.6 | 100 | 60 | 100*0.6 |
| 28-Jul-2001 | 0.3 | 100 | 30 | 100*0.3 |
| 29-Jul-2001 | 0.45 | 190 | 85.5 | 190*0.45 |
| 04-Aug-2001 | -0.7 | 275.5 | -192.5 | 275.5*(-0.7) |
| 04-Aug-2001 | 0.1 | 275.5 | 27.55 | 275.5*0.1 |
| 05-Aug-2001 | 0.4 | 110.55 | 44.22 | 110.55*0.4 |
РЕДАКТИРОВАТЬ: Я понял этот кодекс, но он не работает вообще:
if i>1 & Date(i)>Date(i-1)
Amount(i) = sum(Result(find(Date==Date(i-1)))) + Amount(i-1);
elseif i>1 & Date(i)==Date(i-1)
Amount(i) = Amount(i-1);
end
Result(i)=VariousA(i)*Amount(i);