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();

原文地址:https://www.cnblogs.com/wdkshy/p/10107816.html

时间: 2024-08-04 23:06:41

SAS 统计某个数据集各个字段频数,并汇集到一个表中的相关文章

如何把一个表中的部分字段值插入到另一个表中去 这sql吊

Insert into  JHAC_TB_CODE(CID,CODE,ADD_TIME,USERID,PRO_CODE,USERNAME)  select f_code.FID,f_code.Fcode,f_code.ADDDATE,f_code.USERS,f_code.CPCODE,f_code.USERNAME   from f_codewhere f_code.Adddate between to_date('201201','yyyy-mm') and to_date('201301'

一个表中的某字段中所有的数据,复制到另一个表中

项目要求,织梦被黑了,又不太会修复织梦的漏洞.决定换一个自己开发的后台吧!问题来了,织梦中的文章数据要全部拿出来,导入到新的后台中. 因为,现有后台的数据表跟织梦的表的结构完全不一样,再加上织梦用于保存文章是用了,dede_addonarticle,dede_archives,这两个表.现在是要将两个表中有用的字段的数据 复制到一个新的表中的一个字段内. 第一步,同步他们的主键,dede_addonarticle的主键是aid,dede_archives的主键是id 1,一张写好了结构的,没有数

一个表中的字段值用作另一个表的In查询条件

Question表与Paper表 Paper表中字段QuestionIds存储的是Question表中字段Id的拼接后的值 如: 'f855eba1-b308-4bd7-a250-c071a0e1bdf0','c0570880-931b-4b34-ba34-58937f940c21','96249256-ddd7-4b28-a066-ebe1c337cf6c','c0b6171a-1b50-4881-a5f5-9928ce1bf593','b71ad813-abad-40f2-bf97-a1ae

union 时只能查出一个表中的信息,另一个表只能查出字段

原因:news表中title字段的编码,与brand表中的编码不一致导致 y 原文地址:https://www.cnblogs.com/lxwphp/p/8329241.html

如何使用MySQL一个表中的字段更新另一个表中字段

这篇文章主要介绍了如何使用MySQL一个表中的字段更新另一个表中字段,需要的朋友可以参考下 1,修改1列 ? 1 2 3 update student s, city c set s.city_name = c.name where s.city_code = c.code; 2,修改多个列 ? 1 2 3 update a, b set a.title=b.title, a.name=b.name where a.id=b.id ?子查询 ? 1 update student s set ci

Oracle中查询一个表中字段(列)个数

如果一个表中有很多的字段,而我们想要知道这个表中的字段个数,如果使用如下方式一个一个数,则显得很麻烦 Oracle中可以使用如下sql来查询字段(列)个数 select count(*) from user_tab_columns where table_name=upper('表名') 或者 select max(column_id) from user_tab_columns where table_name=upper('表名') 作者:itmyhome 链接:http://blog.cs

SQL查询一个表中类别字段中Max()最大值对应的记录

问题是: 数据库有一个表 code,里面有个点击量字段click_num和一个类别字段kind以及其它信息字段, 现在要搜出每个类别中点击量最大的那条记录,如果是10个类别,那么结果应该是10条记录, 如果最大点击量有两个相同的只要一条. 经过N次搜索,N次检测网上的解决SQL语句,终于找到个优雅的而且结果正确的SQL,这个是一个博客作者在Mysql的官方文档里面发现的. 禁不住收藏了,以备后用. select id,kind,click_num from code as a where  cl

在ORACLE中如何将一个表中某字段值合计与另一个表的某字段值相减

现在有两个表,A表字段AMOUNT为发票金额,B表字段REV为收款金额,两表通过字段id关联,需将A表的字段AMOUNT与B表的字段REV相减, 但是A表表示的发票可能对应多个B表的收款金额,如何将A表的AMOUNT与对应的B表的多个REV值的和相减,得到未收款金额 select a.id,(nvl(a.AMOUNT,0)-nvl(b.REV,0)) Result from a, (select b.id,sum(b.REV) REV from b group by b.id) b where

如何查询一个表中除某几个字段外其他所有的字段

话说楼主刚开始也不知道怎么查,然后就开始百度了 大部分网友都是建议一个一个写 当然程序员是最懒的啦,一个一个写多痛苦啊 接着找 还别说csdn里还有不少大牛的 于是出现了这个脚本 declare @s nvarchar(1000)select @s=isnull(@s+',','')+quotename(Name) from syscolumns where ID=object_id('表名') and Name not in('排除字段') order by colid exec('selec