#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';