如何在Sas快速集群过程中将长数值转换为数字而非科学形式

时间:2015-11-09 12:34:14

标签: sas

我正在Sas中运行快速集群进程。 我得到的频率值是excel输出的科学形式。我不想要它。我应该改变哪些代码。下面是我的代码的snipeet和我得到的输出

%MACRO LOOP(Start,End);

%DO MAXC=&Start %TO &End;
    ODS HTML PATH="J:\DIAC-CITI\Client_Data\CARDS\03 Analysis\Clustering\Pre-Optimization\Output\Cluster Outputs"
    BODY="MaxCluster&MAXC..xls"
    STYLE=DEFAULT;
    ODS LISTING CLOSE;
    OPTIONS NOLABEL;
    PROC FASTCLUS
        DATA=Pre_Modeling
        OUT=test
        MAXCLUSTERS=&MAXC
        MAXITER=100;
        OUTSTAT=stat&maxc;
        FREQ FREQUENCY;
        WEIGHT REGIONAL_WTS;
        VAR RISK_SCORE;
        TITLE ' ';
    RUN;
    ODS HTML CLOSE;
    ODS LISTING;

    data stat&maxc;
    set stat&maxc(rename=( _type_=type));
    where type in('RSQ','PSEUDO_F','CCC');
    run;

    proc sort data=stat&maxc;
    by type;
    run;

    proc transpose data=stat&maxc out=stat&maxc prefix=value&maxc.;
    by type;
    var over_all;
    run;

%END;
%MEND LOOP;
%LOOP(1,30)

输出

Cluster Frequency


1   69
2   2295564
4   172098
6   6
9   6941
12  32
18  872126
8   4.56E+07
16  34347
17  1.98E+07
15  9568079
10  8824842
7   9669026
3   5855012
5   3353213
11  876159
13  313310
14  202065
19  33736

我得到的频率是科学的。我不想那样。如果我把它改成excel中的数字,它会四舍五入,原始数字会丢失。

任何人都可以帮助我

当我将格式添加到代码

PROC FASTCLUS
        DATA=Pre_Modeling
        OUT=test
        MAXCLUSTERS=22
        MAXITER=100
        OUTSTAT=stat22;
        FREQ frequency format best16. ;
        WEIGHT REGIONAL_WTS;
        VAR RISK_SCORE;
        TITLE ' ';
    RUN;

PROC FASTCLUS
        DATA=Pre_Modeling
        OUT=test
        MAXCLUSTERS=22
        MAXITER=100
        OUTSTAT=stat22;
        FREQ format frequency best16.  ;
        WEIGHT REGIONAL_WTS;
        VAR RISK_SCORE;
        TITLE ' ';
    RUN;

两个代码都没有运行,并且出错了。

1 个答案:

答案 0 :(得分:0)

格式语句应放在代码的最后一部分:Proc Transpose。

   proc transpose data=stat&maxc out=stat&maxc prefix=value&maxc.;
    by type;
    var over_all;
    format over_all best16.;
    run;