SAS 統計某個數據集各個字段頻數,並匯集到一個表中


/*統計表的字段*/
PROC CONTENTS DATA=SASHELP.CLASS NOPRINT OUT=CA(KEEP=NAME);
    
RUN;

/*提取表的變量名*/
PROC SQL NOPRINT;
SELECT NAME INTO:A SEPARATED BY ' ' FROM CA;
RUN;
QUIT;


%LET I=1;

/*計算各個變量的頻數,並存放在一個數據集中*/

%MACRO M_A();

    PROC FREQ DATA=SASHELP.CLASS;
        %DO %UNTIL(%SCAN(&A.,&I,' ')=);

            %LET NI=%SCAN(&A,&I,' ');
            TABLES &NI/MISSING OUT=&NI(RENAME=(&NI=NAME)) NOPRINT;

            %LET i = %eval(&i.+1);

            %PUT "&I.=" &NI.;
        
        %END;
    RUN;

    %LET I=1;
    %DO %UNTIL(%SCAN(&A.,&I,' ')=);

        %LET NI=%SCAN(&A,&I,' ');
        
        DATA &NI.;
            LENGTH VAR $30. VAL $40.;
            SET &NI.;
            VAR="&NI.";
            VAL=CATS(NAME,'');
            DROP NAME;
        RUN;
        PROC APPEND BASE=D DATA=&NI.;
        RUN;

        %LET i = %EVAL(&i.+1);

        %PUT "&I.=SSSSSSS" &NI.;

    %END;

    PROC PRINT DATA=D;
    RUN;

%MEND;

%M_A();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM