设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1820|回复: 0

SAS 统计某个数据集各个字段频数,并汇集到一个表中

[复制链接]

9

主题

64

金钱

110

积分

入门用户

发表于 2019-10-24 14:44:15 | 显示全部楼层 |阅读模式

  1. /*统计表的字段*/
  2. PROC CONTENTS DATA=SASHELP.CLASS NOPRINT OUT=CA(KEEP=NAME);
  3.    
  4. RUN;

  5. /*提取表的变量名*/
  6. PROC SQL NOPRINT;
  7. SELECT NAME INTO:A SEPARATED BY ' ' FROM CA;
  8. RUN;
  9. QUIT;


  10. %LET I=1;

  11. /*计算各个变量的频数,并存放在一个数据集中*/

  12. %MACRO M_A();

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

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

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

  18.             %PUT "&I.=" &NI.;
  19.         
  20.         %END;
  21.     RUN;

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

  24.         %LET NI=%SCAN(&A,&I,' ');
  25.         
  26.         DATA &NI.;
  27.             LENGTH VAR $30. VAL $40.;
  28.             SET &NI.;
  29.             VAR="&NI.";
  30.             VAL=CATS(NAME,'');
  31.             DROP NAME;
  32.         RUN;
  33.         PROC APPEND BASE=D DATA=&NI.;
  34.         RUN;

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

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

  37.     %END;

  38.     PROC PRINT DATA=D;
  39.     RUN;

  40. %MEND;

  41. %M_A();
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表