SAS学习笔记(二)排序、打印和汇总数据

二、排序、打印和汇总数据

1、where语句生成子集

语法:where condition
放在proc print xxx之后。
Mary Cassatt ,Impressionism ,U
Paul Cezanne ,Post-impressionism,F
Edgar Degas ,Impressionism ,F
Paul Gauguin ,Post-impressionism,F
Claude Monet ,Impressionism ,F
Pierre Auguste Renoir,Impressionism ,F
Vincent van Gogh ,Post-mpressionism,N
要求:变量Name,Genre,Origin。将Genre为Impressionism的数据输出,并给出F=France,N=Netherland,U=USA的标注。
在这里插入图片描述
结果:
在这里插入图片描述
注:

  1. 读取数据时,变量Name和Genre数据值过长,一定要有冒号的格式读取,要不然Impressionism无法完整读取,后面where语句Genre='Impressionism’也就继续不了;
  2. fotnote=‘xxxx’ xxxx是标志内容,打印出来在页面底部。

2、proc sort对数据排序

语法proc sort data=xx out=xxx;
诸如nodupkey(删除具有相同by变量值的观测),dupout=xxxx(将删除的观测输出到指定的数据集中)等语句可以放在proc sort语句中。
beluga,whale,15,dwarf,shark,0.5,sperm,whale,60
basking,shark,30,humpback, ,50,whale,shark,40
qray,whale,50,blue,whale,100,killer,whale,30
mako,shark,12,whale,shark,40
要求:变量Name,Type,Length;用by语句将数据先按Type升序再按Length降序。
在这里插入图片描述
结果:
在这里插入图片描述
注: 在原文件中缺失值处要打一个空格,如果没有打空格直接是两个逗号会被无视,读成下面的结果,读csv文件明明两个连续逗号默认为缺失值,不知道这里怎么没有成功。
在这里插入图片描述

3、字符数据的排序

ASCII 空格 数字 大写字母 小写字母
EBCDIC 空格 小写字母 大写字母 数字
proc sort sortseq=linguistic (strength=primary):忽略大小写
proc sort sortseq=linguistic (numeric_collation=on):将数字当作数值处理
Seiki,100 A St. ,juneau,alaska
Wong,2 A St. ,Honolulu,Hawaii
Shaw,10 A St. Apt. 10,Juneau,Alaska
Smith,10 A St. Apt. 2 ,honolulu,hawaii
要求:变量为Name,Street,City,State,生成两个数据集,一个按数值大小(by Street)排序,一个不区分大小写排序(by State)。
在这里插入图片描述
结果:
在这里插入图片描述
在这里插入图片描述
注: 输出语句不要涂方便直接写成了proc print data=Address_sort data=Address_sort_1;
第二个数据集会被忽略。

4、proc print中的选项

proc print noobs label;noobs去掉输出的obs观测序号,label添加标签,暂时还不知道怎么用,见后面。
Adriana,21,3/21/2012,MP,7
Nathan,14,3/21/2012,CD,19
Matthew,14,3/21/2012,CD,14
Claire,14,3/22/2012,CD,11
Ian,21,3/24/2012,MP,18
Chris,14,3/25/2012,CD,6
Anthony,21,3/25/2012,MP,13
Erika,21,3/25/2012,MP,17
要求:变量Name,Class,Date,Type,Quantity。制作报表:利润为数量*1.5,按班级排序,计算每个学生的利润,每个班的利润,用var打印出Name,Date,Type,Profit。
在这里插入图片描述
结果:
在这里插入图片描述
注:

  1. proc sort和proc print都用了by class,因为既要按班级给所有变量排序,又要将利润按班级汇总;
  2. 这里日期直接输出文件里日期形式,直接将Date当成字符,没有格式化输出,因为用infile语句读数据,我还没成功过mmddyyw.的日期格式化输出,用cards语句倒是可以,见下面(这里没有将利润按班级汇总,而是直接给出总利润):
    在这里插入图片描述
    在这里插入图片描述

5、自定义格式proc format

语法:
proc format;
value name1 变值1=‘格式值1’

  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值