使用 PROC FORMAT 和 PROC FCMP 转换 SAS 中的值
Using PROC FORMAT and PROC FCMP to convert values in SAS
我需要在我的 SAS 程序中编写 PROC FORMAT
和 PROC FCMP
以将以马力为单位的值转换为瓦特。瓦特应具有以下格式:XXXXX,XX Watt.
proc fcmp outlib=work.functions.fun;
function hptow(c) $;
n = cats(c*745.7, ' Watts');
return (n);
endsub;
run;
options cmplib=work.functions;
proc format;
value hptow other=[hptow()];
run;
data my_cars;
set sashelp.cars;
format horsepower hptow.;
run;
但结果看起来像这样:
197610.
201339W
如何更改此错误并需要格式化列的输出格式?
为您在函数中计算的变量设置长度。如果您想要 W 前面的 space,请不要使用 CATS() 函数将其删除。
length n ;
n = put(c*745.7,commax8.2) || ' Watts' ;
设置格式的默认宽度。
value hptow (default=14) other=[hptow()];
但为什么不直接使用 PICTURE 格式呢?
proc format ;
picture hptow
low-high = '00009,99 Watt' (mult=74570)
;
run;
结果:
410 data test;
411 do hp=1,2,5,12 ;
412 w=hp*745.7 ;
413 put hp= w= @20 hp hptow.;
414 end;
415 run;
hp=1 w=745.7 745,70 Watt
hp=2 w=1491.4 1491,40 Watt
hp=5 w=3728.5 3728,50 Watt
hp=12 w=8948.4 8948,40 Watt
我需要在我的 SAS 程序中编写 PROC FORMAT
和 PROC FCMP
以将以马力为单位的值转换为瓦特。瓦特应具有以下格式:XXXXX,XX Watt.
proc fcmp outlib=work.functions.fun;
function hptow(c) $;
n = cats(c*745.7, ' Watts');
return (n);
endsub;
run;
options cmplib=work.functions;
proc format;
value hptow other=[hptow()];
run;
data my_cars;
set sashelp.cars;
format horsepower hptow.;
run;
但结果看起来像这样:
197610.
201339W
如何更改此错误并需要格式化列的输出格式?
为您在函数中计算的变量设置长度。如果您想要 W 前面的 space,请不要使用 CATS() 函数将其删除。
length n ;
n = put(c*745.7,commax8.2) || ' Watts' ;
设置格式的默认宽度。
value hptow (default=14) other=[hptow()];
但为什么不直接使用 PICTURE 格式呢?
proc format ;
picture hptow
low-high = '00009,99 Watt' (mult=74570)
;
run;
结果:
410 data test;
411 do hp=1,2,5,12 ;
412 w=hp*745.7 ;
413 put hp= w= @20 hp hptow.;
414 end;
415 run;
hp=1 w=745.7 745,70 Watt
hp=2 w=1491.4 1491,40 Watt
hp=5 w=3728.5 3728,50 Watt
hp=12 w=8948.4 8948,40 Watt