i******r 发帖数: 861 | 1 table A:
x1 x2 x3 x4
1 5 6 9
3 4 6 1
8 2 2 1
...
tabl B:(每个column只有一个值)
a1 a2 a3 a4
0.1 0.2 0.15 0.3
用a1×x1, a2*x2, a3*x3,a4*x4,相当于给x1-x4加权。用merge两个table可以,但是我
有1000个variable,有什么好办法吗?两个table间的操作已经困扰我近一年了。 | k*z 发帖数: 4704 | 2 loop macro or array if no one will solve your problem, i will post it
tomorrow at work. | w********m 发帖数: 1137 | 3 data _name;
length product $20.;
do i = 1 to 1000;
_a = cats("a", i);
_x = cats("x", i);
product = cats("ax", i, "=", _a, "*", _x);
output;
end;
run;
proc sql;
select product into: string separated by ";"
from _name
;quit;
data c;
merge a b;
&string;
run; | D*G 发帖数: 471 | 4 用PROC IML做矩阵乘法。
a乘diag(b)就是你要的结果。
proc iml;
use a;
read all into ma;
use b;
read all into mb;
c=ma*diag(mb);
print c;
run; | w******4 发帖数: 488 | 5 Elegant!
【在 D*G 的大作中提到】 : 用PROC IML做矩阵乘法。 : a乘diag(b)就是你要的结果。 : proc iml; : use a; : read all into ma; : use b; : read all into mb; : c=ma*diag(mb); : print c; : run;
| i******r 发帖数: 861 | |
|