Итак, у меня есть этот код, который направлен на присоединение новой процентной ставки в зависимости от ее первоначального срока погашения. например, если первоначальный срок погашения составляет 0,25 года, я хочу, чтобы он добавил к процентной ставке ставку на 3 месяца.
Код выглядит как
data want;
set maturity;
retain tempMat tempRate;
i = 1;
do until(stop eq 1);
set Maturity2 nobs = num point = i;
diff = abs(sum(Maturity, -OriginalMaturity));
if i eq 1 then
do;
tempMat = diff;
tempRate = Base_Rate_New;
end;
else
do;
if i = num then
do;
stop = 1;
Rate_ok = Base_Rate_New;
end;
else if diff gt tempMat then
do;
stop = 1;
Rate_ok = tempRate;
end;
else
do;
tempMat = diff;
tempRate = Base_Rate_New;
end;
end;
i = i + 1;
end;
конец;
бежать;
Две таблицы выглядят как
data maturity;
input ID maturity base_rate;
datalines
1 0.25 1
2 0.5 1
3 0.6 2
4 0.3 3
5 1.2 1.2
6 1.5 2
7 2 3
8 3 1
9 1 0.5
;
data maturity2;
input originalmaturity base_rate_new;
datalines
0.25 2
0.5 3
0.75 1
1 3
;
run;
набор данных, который я собираюсь создать, будет выглядеть (после удаления всех дополнительных переменных
data want;
input ID maturity base_rate base_rate_new;
datalines
1 0.25 1 2
2 0.5 1 3
3 0.6 2 3
4 0.3 3 2
5 1.2 1.2 3
6 1.5 2 3
7 2 3 3
8 3 1 3
9 1 0.5 3
;
run;
Проблема в том, что в настоящее время, если значение превышает более близкое число, оно все равно выбирает более высокое число. Например, если это 0,3, он выбрал бы 0,5 вместо 0,25
.