Операторы INFORMAT
и FORMAT
не являются исполняемыми.Таким образом, вы можете разместить их в любом месте шага данных (исключая побочный эффект от принудительного определения типа для переменной, которую компилятор еще не набрал).Обратите внимание, что это также означает, что если вы назначите несколько FORMAT (информатов) для одной и той же переменной, то последним будет то, что используется.
Когда инструкция INPUT выполняет любую явную спецификацию informat, которую вы включили в сам оператор INPUT,переопределить любую информацию, связанную с переменной.Еще раз обратите внимание, что если переменная еще не была введена компилятором, то использование оператора INPUT этой переменной приведет к выбору типа переменной.
Поэтому для наиболее предсказуемых результатов вы должны определить свои переменные.вместо того, чтобы позволить SAS угадать, основываясь на том, как они сначала появляютсяВы можете определить их, используя оператор LENGTH
или оператор ATTRIB
.Или определите их, вытянув существующий набор данных с SET
, MERGE
и другими операторами.Тогда порядок операторов INPUT, FORMAT и INFORMAT не будет иметь значения.
Вам придется спросить SAS, почему Enterprise Guide Wizard работает так, как он работает.Насколько я понимаю, для некоторых файлов (например, электронных таблиц Excel) они преобразуют данные в текстовый файл и загружают сгенерированный текстовый файл.Поэтому я предполагаю, что EG сгенерировал значения DATE и TIME как необработанное количество дней или количество секунд, и поэтому он считывает значение, используя обычный числовой информат, а не информацию о дате или времени.Я предполагаю, что он присоединяет INFORMAT к переменным даты и времени, так что метаданные в определении набора данных заполняются чем-то, что соответствует прикрепленному формату.
Относительно того, почему они использовали информацию BEST32.
, я понятия не имею.На самом деле в SAS нет информата BEST
, так что на самом деле это просто псевдоним для 32.
(или они могли бы использовать F32.
).Понятие «лучший» для информатов даже не имеет смысла.Формат BEST используется для определения для этого конкретного числа, какую комбинацию цифр лучше всего генерировать для аппроксимации значения в ограниченном количестве символов.Для чтения строки символов в число SAS просто необходимо прочитать цифры и преобразовать их в число, которое они представляют.Там нет выбора каких-либо "лучших" альтернатив.