热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

chap4过程步基础

1print过程procprint<data数据集名><选项>;*label指定打印输出标签noobs制定不显示观测序号*by变量名1<

1 print过程
proc print <data=数据集名> <选项>;/*label指定打印输出标签 noobs制定不显示观测序号*/
by 变量名1<变量名2>;
footnote<n> <'footnote'>;
format 变量名1 输出格式名;
id 变量名1<变量名2>;
label 变量名='标签名';
pageby 变量名;
sum 变量名1<变量名2>;
sumby 变量名1<变量名2>;
title<n> <'标题内容'>;
var 变量名1<变量名2>;
where 条件语句
run;

2 means过程
proc means <data=数据集名> <选项><统计关键量>;
/*noprint 禁止统计报告输出到output,maxdec=n指定列表输出的最大小数位数;常用统计关键字,如max min sum
var 变量名1<变量名2>;
by 变量名1<变量名2>;
class 变量名1<变量名2>;
freq <变量名>;
weight <变量名>;
id 变量名1<变量名2>;
output <out=数据集名 > 关键字=<新变量名列>;
run;

3 copy过程

复制一个逻辑库下所有数据集到另一个逻辑库下或者一个文件复制到另一个文件
move 选择指定在成功复制到输出库out=指定逻辑库后,从源逻辑库中删除已经复制的成员
select 选择复制的数据集名,exclude排除不需要复制的数据集名
select和exclude不能同时出现,功能相反

proc copy in=源逻辑库名 out=目标逻辑库名  >;
select 成员名 ;
exclude 成员名 ;
run;

libname jx 'd:\jx';/*创建源逻辑库*/
libname sy 'd:\test';/*创建目标逻辑库*/
data jx.stu;input id name $ class;
cards;
1001 高兴 1
1002 你好 1
;
run;
data jx.stu2;input id name $ class;
cards;
1001 董好 2
1002 刘小名 2
;
run;
/*调用copy过程复制数据集到目标逻辑库*/
PROC copy in=jx out=sy move;
/*in=指定源逻辑库名,out=目标逻辑库名,move选择指定复制成功从源逻辑库删除复制的数据集*/
select stu stu2;
/*选择复制的数据集名*/
run;

4 sql过程

实现了关系数据库的结构化查询功能,体现了sas对大型数据库管理系统通用的sql语言支持

proc sql  <选项>;
/*print打印到输出窗口;noprint ;number对输出观测指定行号;nonumber;inobs=指定输入的观测记录行数outobs=;loops=指定sql过程内循环的最大次数 */
数据操纵语句;
quit;
DATA stu_score;
input id name $ chinese math english;
cards;
1001 高兴 58 78 90
1002 马小名 78 38 88
1003 刘小华 89 90 87
1004 董下小 60 80 52
1005 杨小名 38 45 51
1006 张与信 99 89 87
;
RUN;
/*调用sql过程,通过case when语句实现*/
PROC sql;
select name as 姓名,(case when chinese>=80 then '优秀'
when chinese>=60 then '及格'
else '不及格' end) as 语文,
(case when math>=80 then '优秀'
when math>=60 then '及格'
else '不及格' end) as 数学,
(case when english>=80 then '优秀'
when english>=60 then '及格'
else '不及格' end) as 英语
from stu_score;
QUIT;
/*羽毛球比赛结果数据集ym*/
DATA ym;
length sj $10.;
input dm $ sj $ jg $;
cards;
金羽 2012-05-01
金羽 2012-05-01
金羽 2012-05-01
金羽 2012-05-01
金羽 2012-05-02
飞翔 2012-05-02
飞翔 2012-05-02
飞翔 2012-05-02
;
RUN;
/*调用SQL过程*/
PROC sql;
select dm as 队名,sj as 日期, sum(case when jg='胜' then 1 else 0 end) '胜',sum(case when jg='负' then 1 else 0 end) '负' from ym
group by dm,sj
order by dm desc,sj asc;

QUIT;

5 report过程

制作报表的工具,将print、means、tabulate过程的特点与data步报告写法的特点结合起来组合成一个强大的生成报表的工具
headline 指定表头划线 headskip 指定空一行column 指定报表显示列 define 对报表显示列定义属性
compute 指定计算列

libname re 'd:\jx';
data re.house;
input city $ hb_index same_index def_index;
cards;
北京 99.9 100.3 102.4
天津 99.8 100.2 103.1
秦皇岛 99.8 100.5 106.3
石家庄 99.7 101.3 107.7
包头 99.8 100.0 103.9
太原 100.0 100.9 101.7
;
RUN;
proc print data=re.house;
run;
/*调用report过程生成报表*/
PROC report data=re.house headline headskip;
title '六个大中城市住宅销售价格指数 (2012年2月)';
title2 '单月城市销售价格';
column city hb_index same_index def_index dif;
define city /order format=$6. hljs-number">6 '城市';
define hb_index/display format=5.1 hljs-number">5 '环比';
define same_index/display format=5.1 hljs-number">5 '同比';
define def_index/display format=5.1 hljs-number">5 '定基';
define dif/computed format=5.1 hljs-number">5 '差比';
compute dif ;
dif=same_index-hb_index;
endcomp;
RUN;

6 freq过程

计数资料的统计推断,主要两个目的:一是描述分析产生频数和列联表,可简单描述数据;二是统计推断,产生各种统计量,可分析变量间关系,freq可以创建单向频数表,双向和n向交叉表
exact 指定精确测试 tables:若没有这个语句,freq对数据集中每个变量都成圣一个单向频数表

proc freq <选项>;
by 变量名1<变量名2>;
footnote<n> <'footnote'>;
exact 统计选项计算选项>;
output <out=数据集名>选项;
tables requests 选项>;
test 选项;
weight 变量名选项>;
run;

7 summary过程

对数值变量计算单个变量的基本统计量,使用语句与means过程类似

8 compare过程

比较两个数据集内容

9 datasets过程

对sas逻辑库中的sas文件进行列表、复制、换名、添加和删除等操作

10 surverselect抽样过程

常用的抽样有单纯随机抽样(simple random sampling)系统抽样(systematic sampling)分层抽样(stratified sampling) srs sys urs
method= 指定抽样方法,samprate=指定抽样比例,seed=n指定随机数 strata 指定分层变量

 DATA  sj ;
Do i = 1 to 10000 ;
output ;
end ;
RUN;
/*随机抽样 从一万个样本中按随机数100抽取数据*/
PROC surveyselect
data =sj
method = srs
n = 100
out=cysj seed =100;
RUN;
PROC surveyselect
data =sj
method = srs
samprate=0.2
out=cysj2 seed =100;
RUN;

11 format过程

定义数值或者符号文字的输出和输入格式,定义好的变量类型可以在数据步直接引用
value 定义输出格式 invalue 定义输入格式 picture 给出定义的图示输出格式 select 选择给出的输入\输出格式的目录子集

/*format过程定义card_type类型*/
PROC format;
value card_type
1001='普卡'
1002='金卡'
1003='白金卡'
1004='国航联名卡'
1005='标白卡';
RUN;
DATA card;
input id bh;
cards;
1001 345
1002 456
1003 870
1004 987
1005 876
;
RUN;
/*数据集card引用format过程定义的类型card_type*/
DATA trans_card;
set card;
idbh=put(id,card_type.);/*引用card_type类型*/
RUN;
/*打印输出结果,查看数据集*/
PROC PRINT DATA=trans_card;
RUN;
PROC format;
value scor_desc 0-<60='不及格'
60-<80='良好'
other='优秀';
RUN;
DATA stu_score;
input id name $ score;
cards;
1001 高宏 58
1002 马小名 60
1003 刘晓华 80
1004 董青青 90
1005 杨峰 78
;
RUN;
/*打印过程调用format过程定义的类型,通过foramt语句引用类型*/
PROC PRINT DATA=stu_score;
format score scor_desc.;/*format语句引用format过程定义的类型*/
RUN;

12 sort过程

将数据集中某一个变量或几个变量按升序或降序重新排列并把结果存储到输出数据集中
noduprecs 删除重复的记录,发生在排序后 nodupkey 删除重复的by变量记录,发生在排序中,
datecopy暴力数据集创建或修改日期force 强制排序选项

/*SORT过程通过noduprecs 去除完全相同的记录,结果输出到数据集stu_order*/
PROC sort data=stu out=stu_order noduprecs ;
by name;
RUN;
/*SORT过程通过noduprecs 去除姓名相同的记录,并按姓名降序排列,结果输出到数据集stu_order*/
PROC sort data=stu out=st_order nodupkey ;
by descending name;
RUN;
/*农产品经济指数统计,agri_Proc为上涨率*/
DATA ecnomic;
input y_moth $ agri_pro;
cards;
201201 2.3
201202 3.1
201203 2.9
201204 3.2
201205 2.8
;
RUN;
DATA analy;
set ecnomic;
cz=agri_pro-lag(agri_pro);/*求出每条记录比上月的差值*/
RUN;
PROC means data=analy;
var cz;
RUN;

推荐阅读
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • 本文介绍了在序列化时如何对SnakeYaml应用格式化,包括通过设置类和DumpSettings来实现定制输出的方法。作者提供了一个示例,展示了期望的yaml生成格式,并解释了如何使用SnakeYaml的特定设置器来实现这个目标。对于正在使用SnakeYaml进行序列化的开发者来说,本文提供了一些有用的参考和指导。摘要长度为169字。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
author-avatar
HuPangpang_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有