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



我正在尝试以以下格式格式化特定字段:如果值为 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

像这样的事情怎么样:

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;

自定义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;

最新更新