1

我在 proc iml 中很新。sooo......我无法声明和创建变量。在编码行中,声明显示为红色。如果我运行它,就像'语句无效或使用顺序不正确'

谢谢您的帮助

    proc iml;
declare DataObject dobj;
   dobj = DataObject.CreateFromFile("Hurricanes");
   dobj.Sort( "latitude" );
4

2 回答 2

2

那是 IML Studio 语法,而不是PROC IML语法。IML Studio 基本上使用 IMLPlus,它是 IML 的面向对象版本。有关详细信息,请参阅此文档页面

于 2015-01-30T18:11:26.740 回答
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。[编辑] 请参阅乔的答案以获得解释。

IML 代码的一个很好的参考可以在这里找到。可以在此处找到有关 read 语句的更多详细信息(如何指定要读取的变量和行) 。

编辑以回答扩展问题 您可以使用createandappend语句将数据从 IML 导出到数据集。然后使用其他程序来执行您的图形proc univariateproc 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 SASSTATIML

于 2015-01-30T18:11:37.150 回答