Преобразовать число в символ 20 - PullRequest
2 голосов
/ 13 мая 2011

Привет! Я создаю набор данных, но данные, которые я объединяю, имеют разные форматы.

Из листа Excel я импортирую его в числовое значение 8, а остальные 2 набора данных, которые я объединяю, являются символом 20, поэтому я хочу изменить числовое значение 8 на символ 20.

Как я могу изменить переменную acctnum на char 20? (Я также хочу сохранить это как его имя, так как я предполагаю, что будет создана новая переменная)

data WORK.T82APR;       
set WORK.T82APR;
rename F1 = acctnum f2 = tariff;
run;

proc contents data=T82APR;
run;

Ответы [ 2 ]

3 голосов
/ 03 июля 2013

Хотя этот поток уже мертв, я подумал, что смогу ответить и почему 14-разрядное преобразование стало в обозначении E.

Как правило, точнее, если не указано иное, числовые форматы в SAS используют BEST12формат.Таким образом, когда числовое значение длиннее 12 символов (включая запятые и точки), BEST12 выбирает нотацию E как лучший способ форматирования значения.

Функция ввода в этом случае получает отформатированное значениеположить (acctnum, BEST12.).Было бы 2 способа обойти это.

Либо используйте

input(put(acctnum, 14.), $20.);

, либо измените формат переменной с помощью оператора формата (непосредственно в шаге данных или с наборами данных proc, такими как) - это дает дополнительное преимущество: если вы откроете таблицу в SAS, вы увидите 14 цифр, а не научное форматированное значение.

proc datasets library=work nolist;
    modify dsname;
        format acctnum 14.;
run;

Vincent

2 голосов
/ 13 мая 2011

Попробуйте это:

data WORK.T82APR ;       
set WORK.T82APR;
acctnum = put(F1, $20.);
rename f2 = tariff;
run;

Хорошо, я не обратил внимания на ваше собственное заявление о переименовании, поэтому я изменил свой ответ, чтобы отразить это сейчас.

...