我在proc iml中很新。 sooo ......我无法声明并创建变量。在编码行中,声明以红色显示。如果我运行它,它就像是'声明无效或使用不正确的顺序'
感谢您的帮助
proc iml;
declare DataObject dobj;
dobj = DataObject.CreateFromFile("Hurricanes");
dobj.Sort( "latitude" );
答案 0 :(得分:2)
这是IML Studio语法,而不是PROC IML
语法。 IML Studio基本上使用IMLPlus,它是面向对象的IML版本。有关详细信息,请参阅this documentation page。
答案 1 :(得分:2)
如果您想通过代码将数据集读入IML矩阵,通常的方法是:
proc iml;
use sashelp.class; /* Open the dataset for reading */
read all var _num_ into A; /* Put all the rows and all numeric columns into a matrix called A*/
close sashelp.class; /* Close the dataset */
/* Your IML statements here */
print A;
quit;
我之前从未见过declare或dataobject语法,也许其他人可以解释一下。我认为它可能是SAS / IML Studio特有的,而不是SAS / IML。 [编辑]请参阅Joe的答案以获得解释。
可以找到IML代码的绝佳参考here。有关read语句的更多详细信息(如何指定要读取的变量和行)here。
编辑以回答扩展问题
您可以使用create
和append
语句将数据从IML导出到数据集。然后使用其他过程为直方图执行图表proc univariate
或proc sgplot
。
proc iml;
/* Read in your Data */
use sashelp.cars;
read all var _num_ into A;
close sashelp.cars;
/* Your IML statements here */
B = A;
/* Write out your data */
create temp from B;
append from B;
quit;
/* Plot a histogram of the first two columns */
proc sgplot data = temp;
histogram col1 / binstart = 0 binwidth = 10000;
histogram col2 / binstart = 0 binwidth = 10000 transparency= 0.5;
run;
当您查看文档时,您应该避免使用IML Studio用户指南,因为您无权访问该产品。而是尝试Base SAS,STAT和IML。