如何将每行与sas中另一个矩阵元素的每行相乘?
我有一个行矩阵(矢量)A和另一个矩形矩阵B.我如何使用proc iml或其他方式将每行矩阵B与SAS中的行矩阵A相乘?如何将每行与sas中另一个矩阵元素的每行相乘?
假设
A = {1 2 3}
B =
{2 3 4
5 9 10}
我的输出C将是:
{2 6 12
5 18 30}
谢谢!
回答:
使用逐元素乘法运算,#
在IML:
proc iml; a = {1 2 3};
b = {2 3 4,
1 5 3,
5 9 10};
c = a#b;
print c;
quit;
回答:
有当然的非IML解决方案,或二十,虽然IML以DOM指出是可能比较容易。这里有两个。
首先,将它们置于一个数据集上,其中a
数据集位于每行(带有一些其他变量名称) - 见下文。然后,或者只是做数学(使用数组)或使用PROC MEANS
或类似的数据集来使用a
作为权重。
data a; input w_x w_y w_z;
datalines;
1 2 3
;;;;
run;
data b;
input x y z;
id=_n_;
datalines;
2 3 4
1 5 3
5 9 10
;;;;
run;
data b_a;
if _n_=1 then set a;
set b;
*you could just multiply things here if you wanted;
run;
proc means data=b_a;
class id;
types id;
var x/weight=w_x;
var y/weight=w_y;
var z/weight=w_z;
output out=want sum=;
run;
以上是 如何将每行与sas中另一个矩阵元素的每行相乘? 的全部内容, 来源链接: utcz.com/qa/263467.html