Z4
в операторе format
указывает, как отображается значение, а не как оно обрабатывается как данные. 4.
в вызове функции put
указывает, как числовое значение преобразуется в символьное представление числа. В SAS, в отличие от языков сценариев, тип переменной является статическим на шаге данных и при сохранении в наборе выходных данных. Наилучшей практикой является концептуально «дать» sched_dep_time
роль (или тип) и придерживаться ее, создавая новые переменные для других ролей часа, минуты и времени SAS.
data have;
input time_as_encoded_number;
datalines;
415
1022
1215
2345
run;
data want;
set have;
hour = floor(time_as_encoded_number / 100);
minute = mod(time_as_encoded_number , 100);
time_as_SAS_time = DHMS(0,hour,minute,0);
format time_as_SAS_time time5.;
* for demonstration only, causes a NOTE, and goes in circle Num->Char->Num;
length x 8;
x = put (time_as_encoded_number,4.);
run;
Примечание. Такое утверждение, как демонстрация, «работает» с NOTE:
, потому что оно идет кругами. Число преобразуется в символ с помощью put
и неявно преобразуется обратно в число из-за левой стороны = правой стороны.
length x 8;
x = put (time_as_encoded_number,4.);