首页 > 解决方案 > 如何在 SAS 中初始化一个简单的矩阵?

问题描述

我是 SAS 新手,大部分时间都在使用 R。我陷入了一个简单而令人沮丧的问题。我要做的就是在 SAS 中创建一个简单的 3 X 3 矩阵。但它会引发错误。我需要一些帮助来了解发生了什么。SAS 文档不是很有帮助。

data matrixTest;
 input Y $ X;
 cards;
 4 0
 3 1
 1 1
 ;
run;

/*Convert X to a categorical variable*/
data matrixTest;
set matrixTest;
if X = 0 then X = "0";
else X = "1";
run;

/*Get design matrix from the regression model*/
 proc transreg data=matrixTest design;
  model class(X/ zero=last);
  output out=input_mcmc(drop=_: Int:);
 run;



mX = {5 4 3, 4 0 4, 7 10 3};

创建矩阵 mX 时出现以下错误:

ERROR 180-322: Statement is not valid or it is used out of proper order.

标签: matrixsas

解决方案


您的错误是 SAS 不是矩阵语言。SAS 更像是一种数据库语言;操作单元是数据集,类似于 R 或 Python 中的 SQL 表或数据框。

SAS 确实在系统中内置了一种矩阵语言 SAS/IML(交互式矩阵语言),但它不是基本 SAS 的一部分,也不是您在所展示的上下文中使用的真正内容。作为程序的一部分输入数据的方式与在第一个数据步骤中使用数据线的方式相同。

旁注:您还在第二个数据步骤中显示了一些 R 趋势;您不能以这种方式转换变量的类型。SAS只有“数字”和“字符”,所以无论如何你都没有“分类”数据类型;保持原样。


推荐阅读