Попытка понять некоторый синтаксис SAS - PullRequest
0 голосов
/ 24 августа 2018

Я работаю с 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 голосов
/ 24 августа 2018

@ в операторе INPUT используется для перемещения указателя столбца. Итак, @1 перемещается в первый столбец.

Обратите внимание, что все примеры ваших данных имеют отступ в три пробела, поэтому ваша программа не будет работать. Если вы поместите оператор DATALINES (или CARDS), начиная с первого столбца, тогда редактор автоматически переместится в первый столбец, когда вы вставите строки, чтобы начать ввод данных. Программа также будет более понятна читателю, если оператор DATALINES находится в первом столбце.

Обратите внимание, что ваше первое значение слишком длинное для INFORMAT, который вы используете в операторе INPUT. Вы использовали ширину 4 символа, но значение имеет 5 символов, считая десятичную точку.

Кроме того, вы обычно включаете десятичную часть в спецификацию информатики , когда знаете, что необработанные данные преднамеренно NOT предоставили фактический символ периода, чтобы указать границу между этими значениями. и десятое место. Таким образом, если ваше значение необработанных данных было 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;
0 голосов
/ 24 августа 2018

@1 и @7, используемые в вашем коде, указывают позицию столбца, в которой SAS должен ожидать, чтобы найти входные данные. Таким образом, данные col1 должны быть найдены в позиции 1 столбца данных и далее, столбцы col2 должны быть найдены в позиции 7 столбца данных.

Возможно, вам потребуется изменить некоторые данные, чтобы они соответствовали ожидаемым позициям ввода @column.

...