如何将每行与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

回到顶部