【发布时间】:2014-10-10 16:58:37
【问题描述】:
我在从 EXCEL 导入下面有一个名为 input_data 的数据集。
0.353481635 0.704898683 0.078640917 0.813815803 0.510842666 0.240912872 0.986312218 0.781868961 0.682272971
0.443441526 0.653187181 0.753981865 0.34909803 0.84215961 0.793863082 0.047816942 0.176759112 0.54213244
0.21443281 0.142501578 0.927011587 0.407251043 0.290280445 0.90730524 0.677030212 0.770541244 0.915728969
0.583493041 0.685127614 0.119042255 0.067769934 0.795793907 0.405029459 0.817724346 0.594170688 0.345660875
0.816193304 0.636823417 0.036348358 0.027985453 0.117027493 0.436516667 0.593191955 0.916981676 0.574223091
0.766842249 0.743249552 0.400052263 0.809650253 0.683610082 0.42152573 0.050520292 0.329441952 0.868549022
0.112847881 0.462579082 0.526220066 0.320851313 0.944585551 0.233027402 0.66141107 0.8380858 0.120044416
0.873949265 0.118525986 0.590234323 0.481974796 0.668976582 0.466558592 0.934633956 0.643438048 0.053508922
我在下面还有另一个名为 p 的数据集
data p;
input p;
datalines;
0.12
0.23
0.11
0.49
0.52
0.78
0.8
0.03
0.02
run;
proc transpose data = p out=p2;
run;
我想做的是使用 SAS 在 IML 中进行矩阵操作。
我已经有一些代码,但最终的计算出错了。有人可以帮帮我吗?
proc iml;
use input_data;
read all var _num_ into x;
print x;
proc iml;
use p2;
read all var _num_ into k;
print k;
proc iml;
Value1 = k * x;
print Value1;
quit;
【问题讨论】:
-
看起来你有一个 8x9 矩阵和一个 1x9 矩阵,所以你不能将它们相乘。您需要将其中一个转置为 8x9 * 9x1。这是假设您想要矩阵的点积。跳过转置步骤,应该没问题。
-
即使我删除转置,它显示 x 0 row 0 col (type ?, size 0) kpd 0 row 0 col (type ?, size 0)
-
将来也可以使用sas-iml 标签,不仅因为这是关于 iml 的,而且 Rick 有时会比我更快地回答这些问题,而且对于更难的 IML 问题肯定更有知识。