Как использовать PUT и ВВОДИТЬ числовые данные в SAS

#types #sas #format

#типы #sas #форматировать

Вопрос:

У меня проблема с приведением с использованием PUT и INPUT для некоторых столбцов в таблице SAS.

Я пытаюсь отформатировать :

                ###I need:          Using: 
tipdoc='01' -> tipdoc=1            input(tipdoc, 1.)
coddoc=1234 -> coddoc=00001234     put(coddoc, z8.) 

  

но у меня есть этот результат :

 tipdoc=0
coddoc=       .
  

Не могли бы вы высказать несколько идей?
Спасибо.

Комментарии:

1. coddoc Это символьная переменная или числовое значение, которое должно отображаться с начальными нулями?

2. Здравствуйте, coddoc — это числовая переменная.

Ответ №1:

Информация сообщает INPUT , как интерпретировать входящее значение. 1. выбирается только 0 цифра, и вы получаете цифру 0. coddoc это уже число, и ему нужен формат только для отображения начальных нулей, или, может быть, вам нужна символьная переменная с начальными нулями.

 data want;

tipdoc='01';
coddoc=1234;

tipdoc_num = input(tipdoc,best12.);
format coddoc z8.;

coddoc_char = put (coddoc,z8.);

run;

ods listing;
proc print data=want;
run;

--------

                             tipdoc_    coddoc_
Obs    tipdoc      coddoc      num        char

 1       01      00001234       1       00001234
  

Ответ №2:

Вы используете ФОРМАТ для преобразования значений в текст. Вы используете INFORMAT для преобразования текста в значения. Используйте форматы с операторами FORMAT и PUT и с функциями PUT() (и PUTN() и PUTC()). Используйте INFORMATS с инструкциями INFORMAT и INPUT и с функциями INPUT() (а также INPUTC() и INPUTN()).

Если TIPDOC это символьная строка, то используйте INFORMAT, ширина которого по меньшей мере равна самому длинному значению, которое имеет переменная. Или, на всякий случай, вы могли бы просто использовать максимальную ширину, разрешенную используемой вами информацией.

 numberic_tipdoc = input(tipdoc,32.);
  

Если CODDOC это число, то вы могли бы либо использовать формат для отображения значения с начальными нулями. Или используйте PUT() функцию для создания символьной переменной с форматированным значением.

 format coddoc z8. ;
character_coddoc = put(coddoc, z8.);
  

Если преобразованное значение CODDOC отображается как точка, значит, в нем отсутствовало значение. Именно так SAS отображает отсутствующие числовые значения. Вы можете использовать MISSING опцию, чтобы указать SAS отображать пропущенные значения, используя какой-либо другой символ. Например, чтобы отобразить его в виде пробела, используйте команду

 options missing=' ';
  

прежде чем использовать функцию PUT() или печатать значение другими методами.

Или вы могли бы просто проверить программу, если CODDOC отсутствует, а затем использовать другое значение для новой переменной.

 character_coddoc = put(coddoc, z8.);
if missing(coddoc) then character_coddoc='missing';