2024-06-13 base SAS programming学习笔记2(PROC PRINT)

1.PROC PRINT

 使用proc print 可以创建列表,proc print 还可以使用SUM  variables对某列数据求和,

        proc  print data=  noobs  split="*"   label ;  noobs(不输出OBS列)

                where conditions;(根据条件挑选行数,只支持一个where语句)

                by  variables  notsorted;(这个subsetting,根据BY变量取数据集子集)

                var  variables;(挑选listing的变量)

                id  variables;(代替OBS 列)

                sum  variables ;对数值列求和

notsorted选项不要求数据集按照by语句的变量名提前用proc  sort排序,但是如果同一个组 却在数据集内不连续,proc print 会分开取子集,而不会放于同一个子集中;

split="*" 表示将标签里面的内容按*分行,如果存在*的话,*也可以替换成其他用户自定义的字符;

label表示在输出界面显示标签

如果ID 不与BY 连用,BY 语句的变量及值会作为标题:

如果ID 与BY 语句联用,BY语句的变量作为第1列,值在会首次出现时显示

    proc  print  data=sashelp.class;
        where age>13;
        var name age height weight;
        by sex;
        id sex;
        sum age;
    run;

2. WHERE 语句

where 语句可以对数值型变量或者字符型变量进行挑选,比较的逻辑字符如下:

=  or  eq,等于

^= or ne ,不等于

> or gt , 大于

< or lt,小于

>= or ge,大于或等于

<= or le ,小于或等于

contain or ?  , 包含 

多个复合语句可以用and或者& 表示并集,or 或者|表示交集,有些时候对于同一个变量取交集可以使用in (level1,leve2,.....)更方便:

where   actlevel ="low" or actlevel="mod";  where actlevel in ("low","mod")等价

where   fee=124.80 or fee=178.20 ;where fee in (124.80,178.20) 等价

还可以对于and 或者or使用的条件用括号括起来,SAS会先执行括号内的逻辑:
where (age<=55 and pulse>75) or area="A";

where  age<=55 and (pulse >75 or area="A");

3. titles和footnotes

        每个PROC步中,在titles和footnotes语句中可以添加最多10个titles或footnotes。如:

title <n> "text"     ;      footnote <n> "text" ;

如果title或者footnote后面没有加数字,则默认title=title1,footnote=footnote1;

title和footnote是全局变量,因此一旦设置生成会一直保留,除非设置新的title和footnote,新的title<n> 和footnote<n>会覆盖title<n>和footnote<n>及以上的所有title和footnote;

比如title2会覆盖已有的title2且清空title3-title10如果存在的话

使用title和footnote可以直接清空所有的title和footnote

4.format 语句

以下是SAS常用的格式,我们使用FORMAT的格式时需要保证宽度w覆盖数据最长的宽度

Format定义格式举例
w四舍五入至w宽度最近整数7.
w.d四舍五入至w宽度d个小数位数(w宽度包含小数)8.2
COMMAw.d四舍五入至w宽度d个小数位数(w宽度包含小数和逗号),以逗号分隔comma8.2
DOLLARw.d四舍五入至w宽度d个小数位数(w宽度包含小数、美元符合和逗号),以美元符合显示,以逗号分隔dollar6.2
        MMDDYYw.09/12/97(MMDDYY8.)或者09/12/1997(MMDDYY10.),w表示所有字符和数字的宽度mmddyy10.
$w.定义字符宽度$12.
DATEw.16OCT99(DATE7.)或者16OCT1999(DATA9.)date9.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值