1

我需要在我的 SAS 程序中编写一个PROC FORMATandPROC 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

如何更改此错误并需要格式化列的输出格式?

4

1 回答 1

3

为您在函数中计算的变量设置一个 LENGTH。如果您想要 W 前面的空间,请不要使用 CATS() 函数将其删除。

length n $14;
n = put(c*745.7,commax8.2) || ' Watts' ;

设置格式的默认宽度。

value hptow (default=14) other=[hptow()];

但是为什么不直接使用图片格式呢?

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
于 2020-11-14T00:06:45.187 回答