将我的结果绑定到 SAS 中的 [-1,1]
Bound my result to [-1,1] in SAS
我正在根据四年的付款计算一个分数,我希望为我的分数设置一个上限,使其只能在 -1 和 1 之间。随后我想计算以下分数0 如果上限已用完 - 例如:
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;
我一直在用下面的代码查看 ceiling 函数
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.
所以总而言之,我正在寻找一种方法来计算付款的比例,然后将上限设置为 1,然后一旦达到上限,后续分数必须为零(我想这可以完成只需执行 IF-THEN)
ceil
函数是一种舍入。您需要 min
和 max
:
do i = 1 to 3;
fract = min(max(fraction, -1) ,1);
end;
我正在根据四年的付款计算一个分数,我希望为我的分数设置一个上限,使其只能在 -1 和 1 之间。随后我想计算以下分数0 如果上限已用完 - 例如:
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;
我一直在用下面的代码查看 ceiling 函数
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.
所以总而言之,我正在寻找一种方法来计算付款的比例,然后将上限设置为 1,然后一旦达到上限,后续分数必须为零(我想这可以完成只需执行 IF-THEN)
ceil
函数是一种舍入。您需要 min
和 max
:
do i = 1 to 3;
fract = min(max(fraction, -1) ,1);
end;