如何在sas中将每一行与另一个矩阵元素的每一行相乘?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在sas中将每一行与另一个矩阵元素的每一行相乘?相关的知识,希望对你有一定的参考价值。

我有一个行矩阵(向量)A和另一个方阵B.如何使用proc iml或其他方法将矩阵B的每一行与SAS中的行矩阵A相乘?

让我们说吧

a = {1 2 3} b = {2 3 4 1 5 3 5 9 10}

我的输出c将是:

{2 6 12 1 10 9 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中将每一行与另一个矩阵元素的每一行相乘?的主要内容,如果未能解决你的问题,请参考以下文章

如何将给定矩阵的每一行中的所有元素与给定向量的相应元素相乘并在 MATLAB 中求和?

将密集向量与 Tensorflow 中稀疏矩阵的每一行相乘

如何将矩阵的每一行除以R中的向量元素

两个 pandas MultiIndex 帧将每一行与每一行相乘

如何计算矩阵的乘法?

Kusto:将结果集中的每一行与另一个表进行比较