试图了解一些SAS语法

时间:2018-08-24 12:04:33

标签: sas

我在工作中与SAS EG一起工作,并且对此非常熟悉,但是现在我正尝试使用SAS大学来学习基本SAS的编程基础。

有人可以看看下面的代码,并告诉我在声明这些列时@ 1和@ 7是什么意思吗...我认为这与允许的数字长度有关吗?

谢谢!

DATA MYDATA1;
   INPUT **@1** COL1 4.2  **@7** COL2 3.1;
   ADD_RESULT = COL1 + COL2;
   DATALINES;
   11.21 5.3
   3.11 11
   ;
PROC PRINT DATA= MYDATA1;
RUN;

2 个答案:

答案 0 :(得分:1)

代码中使用的@1@7表示SAS应该期望在其中查找输入数据的列位置。因此,col1数据应从数据列位置1开始,而col2应在数据列位置7之后。

您可能需要重新对齐一些数据,以使其与预期的@column输入位置一致。

答案 1 :(得分:1)

@语句中的INPUT用于移动列指针。因此@1移到第一列。

请注意,示例数据行全部缩进了三个空格,因此您的程序将无法运行。如果将DATALINES(或CARDS)语句放在第一列的开头,那么当您插入行以开始输入数据时,编辑器将自动移至第一列。如果DATALINES语句在第一列中,该程序也将对读者更清晰。

请注意,对于INPUT语句中使用的INFORMAT,您的第一个值太长。您使用的宽度为4个字符,但该值有5个字符(以小数点计算)。

此外,当您知道原始数据有意提供了实际的句点字符以指示两个字符之间的边界时,通常您只会在信息规范中包含小数部分一个和十分之一的地方。因此,如果您的原始数据值为1121,那么用4.2进行读取将得到数字11.21

DATA MYDATA1;
   INPUT @1 COL1 5.  @7 COL2 3.;
   ADD_RESULT = COL1 + COL2;
DATALINES;
11.21 5.3
3.11  11
;

PROC PRINT DATA= MYDATA1;
RUN;