2

我正在根据四年内的付款计算一个分数,我希望对我的分数设置一个上限,使其只能介于 -1 和 1 之间。随后,如果上限是,我想将以下分数设为 0 maxxed out - 一个例子是:

data want;
    input payment1 payment2 payment3 payment4 fraction1 fraction2 fraction3;
    datalines;
100 25 25 25 0.25 0.25 0.25
150 50 50 50 0.33 0.33 0.33
50 10 10 10 0.2 0.2 0.2
10 50 60 70 1 0 0
;
run;

我一直在用以下代码查看天花板函数

data want2;
    set want;
    array fraction(3) fraction1 - fraction3;
    array payment(4) payment1 - payment4;

    do i = 2 to 4;
        fraction(i-1) = payment(i)/payment(1);
    end;
run;

data want3;
    set want2;
    array fraction(3) fraction1 - fraction3;
    array fract(3) fract1-fract3;

    do i = 1 to 3;
        fract = ceil (fraction,1); 
    end;
    drop i;
run;

但我收到了这个错误

ERROR 72-185: The CEIL function call has too many arguments.

所以总而言之,我正在寻找一种方法来计算付款的分数,然后将上限设为一个,然后一旦达到上限,后续分数必须为零(我想这可以通过做一个 IF 来完成-然后)

4

1 回答 1

2

ceil函数是一种舍入。你需要minmax

do i = 1 to 3;
    fract = min(max(fraction, -1) ,1); 
end;
于 2018-04-04T07:18:48.983 回答