尝试格式化SAS中的字段,忽略小数位

时间:2019-04-08 15:39:18

标签: sas data-analysis

我正在尝试使用以下格式设置特定字段的格式: 如果值为60.00,则必须显示为60。 如果值为14.32,则必须显示为1432 如果为0.00,则输出应为0 即不应该显示小数点。

下面是我尝试过的数据集和选项。

data input_dataset;
 input srno $ bill_amt $10.;
 datalines;
 1 60.00
 2 0.00
 3 14.32
 ;
 run;



data test;
 set input_dataset;
 format mc062 $10.;
 mc062 = put((bill_amt *100 ),10.);

运行;

     expected Results are:
     mc062:
     60
     0
     1432

2 个答案:

答案 0 :(得分:0)

怎么样?

data input_dataset;
input srno $ bill_amt ;
datalines;
1 60.00
2 0.00
3 14.32
;
run;

data output_dataset;
set input_dataset;
if (bill_amt NE int(bill_amt))then bill_amt = bill_amt * 100;
run;

答案 1 :(得分:0)

自定义PICTURE格式将根据图片模板缩放数字之前的数据值。

此示例具有一个比例缩放后最多12位数字的模板。

proc format;
  picture nodecimals 
    0 = '9'
    other='000000000000'   /* 12 digit selectors */
    (mult=100)             /* value scaling multiplier */
  ;
run;

data have;
 input srno $ bill_amt ;  * get some NUMERIC billing amounts;

 format bill_amt 10.2;    * format to be used when showing value;

 * copy amount into bill_raw (no format) just for learning about 
 * the effect of a format (or not) in output produced for viewing;
 bill_raw = bill_amt;     

 * copy amount in mc062 variable that will custom PICTURE format applied
 * when output (for viewing) is produced;
 mc062 = bill_amt;
 format mc062 nodecimals.;

 datalines;
 1 60.00
 2 0.00
 3 14.32
 4 123.456
 ;
 run;

* produce some output for viewing;
proc print data=have;
run;