我正在尝试使用两个循环进行计算。但我对循环元素不是很熟悉。
这是我的数据:
data try;
input rs t a b c;
datalines;
0 600
1 600 0.02514 667.53437 0.1638
2 600 0.2766 724.60233 0.30162
3 610 0.01592 792.34628 0.21354
4 615.2869 0.03027 718.30377 0.22097
5 636.0273 0.01967 705.45965 0.16847
;
run;
我要计算的是,对于每个“T”值,a、b 和 c 的所有元素都需要用于方程。然后我创建变量 v1-v6 来为每个 T1-T6 放置方程的结果。之后,我创建 CS 来汇总 v 的所有元素。
所以我的结果数据集将如下所示:
rs T a b c v1 v2 v3 v4 v5 v6 CS
0 600 sum of v1
1 600 0.02514 667.53437 0.1638 sum of v2
2 600 0.2766 724.60233 0.30162 sum of v3
3 610 0.01592 792.34628 0.21354 sum of v4
4 615.2869 0.03027 718.30377 0.22097 sum of v5
5 636.0273 0.01967 705.45965 0.16847 sum of v6
我在下面编写了一个代码来执行此操作,但出现错误。主要是我不确定如何正确使用 i 和 j 来链接变量的所有元素。有人能指出我认为不正确的吗?我知道 myabe 我不应该使用 sum 函数来累积变量的元素,但不确定要使用哪个函数。
data try3;
set try;
retain v1-v6;
retain t a b c;
array v(*) v1-v6;
array var(*) t a b c;
cs=0;
do i=1 to 6;
do j=1 to 6;
v[i,j]=(2.89*(a[j]**2*(1-c[j]))/
((c[j]+exp(1.7*a[j]*(t[i]-b[j])))*
((1+exp(-1.7*a[j]*(t[i]-b[j])))**2));
cs[i]=sum(of v[i,j]-v[i,j]);
end;
end;
run;
例如,v1 将像 v[1,1] =0 一样计算,因为 ab c 没有值。
对于 v[1,2]=(2.89*0.02514**2(1-0.1638))/((0.1638+exp(1.7*0.02514*600-667.53437)))*((1+exp(-1.7*0.02514* (600-667.5347)))**2))。
v[1,3]]=(2.89*0.2766**2(1-0.30162))/((0.30162+exp(1.7*0.2766*600-724.60233)))*((1+exp(-1.7*0.2766* (600-724.60233)))**2))。
v[1,4] 将使用 abc 的下一行值,但 t 将与 t[1] 相同。并这样做直到最后一行。这将是 v1。然后我需要将 v1 的所有元素相加,例如 v1{1,1] +v1[1,2]+ v1{1,3] ....v1[1,6] 以生成 cs[1,1] .