SAS-一些有用的语句

今天本想继续介绍
summary过程的,但是发现别人整理的比我更好,于是周末再更,好好整理一下描述性统计分析及评分卡建模,今天给大家介绍一些sas有用的语句吧。

1.如果在同一程序中需要多次调用print语句,用%str可以节省程序书写;



%let print=%str(proc print data=sashelp.class;run;);



&print;



2.查看变量类型;



data a;



  set sashelp.class;



  w=vtype(age);



run;



3.结构查询语言;



 select语句用来检索数据(order从句,format选项) ;



create语句创建表格;



update语句增加或修改表格中列的数值(insert和delete语句插入和删除行,用alter语句增加、修改、删去列)



例子:



data employee;



  input empname $ empcity $ empyears emptitle $
sales;



  cards;



aa  
beijing  
3   engineer 2300



bb   shangqiu 
2   teacher 
3000



cc   changsha 
32  worker  
4000



dd   changsha 
20  salesrep 1000



;



proc sql;



  create table changsha
as  



  select empname,



        
empcity,



        
empyears format=yymmdd8.,



        
sales*2 as totalsales,

emptitle



  from employee



  where empcity='changsha'



  order by empyears asc; 



  alter table changsha add gender char(1);



  update changsha



    
set gender='f'



    
where empname in ('aa','cc');



  update changsha



    
set gender='m'



    
where gender is missing;



  insert into
changsha

values('ff', 'changsha',10, 8000,'teacher','m');



  delete from
changsha

where
empyears>20;



quit;



proc print data=changsha;



run;



4.计算行数;



%let dsid=%sysfunc(open(sashelp.class,i));  



%let n=%sysfunc(attrn(&dsid,nobs));



%let rc=%sysfunc(close(&dsid));



%put obsnum=&n;



 5.scan()用法:



data a;



  arg='ABC.DEF(X=Y)';



  word=scan(arg,-3);







run;



data c;



arg='ABC.DEF(X=Y)';



word=scan(arg,-20);



put word;



run;



data d;



input Arr $ & 22.;



ArrivalGate=scan(Arr,1,' ');



DepartureGate = scan(Arr,2,' ');



put  DepartureGate  ArrivalGate
arr;



cards;



Arrival DepartureGates



;



run;



6.sysfunc()用法;



data a;



input group $ number point;



cards;



A 1 85



A 2 66



B 1 69



C 3 55



D 4 24



;



run;



%macro macro_name(group,number,point);



data out_&group.;



group="&group";



number=&number.;



point=&point.;



run;



%mend;



%macro test;



*打开存放参数的数据集;



%let dsid=%sysfunc(open(work.a,i));



%put
&dsid;       
*%put是在日志输出改宏变量的值;



*fetch是为了判断是否读取完数据集记录,若已读完,则返回-1,否则返回0,赋给宏变量rc;



%let rc=%sysfunc(fetch(&dsid));



       
%do %while(&rc=0);



           
*trim是去掉字符右边的空格,left是去掉字符左边的空格,getvarc(&dsid,1)是读取数据集的第一列,

读取第二列则为getvarc(&dsid,2),getvarc是针对字符,若该列是数值型的则为getvarn(&dsid,2);

%let
group=%sysfunc(trim(%sysfunc(left(%sysfunc(getvarc(&dsid,1))))));

%let
number=%sysfunc(trim(%sysfunc(left(%sysfunc(getvarn(&dsid,2))))));

%let
point=%sysfunc(trim(%sysfunc(left(%sysfunc(getvarn(&dsid,3))))));

%put
&group;    
%put
&number;    
%put &point;



               
%macro_name(&group,&number,&point);*将参数传给调用你所需要运行的宏macro_name;

%let
rc=%sysfunc(fetch(&dsid));       
*同上fetch;



               
%put &rc;



       
%end;

               
%let
rc=%sysfunc(close(&dsid));       
*关闭数据集;



               
%put &rc;



%mend;



%test;

SAS-一些有用的语句的更多相关文章

  1. SAS笔记(2) RETAIN语句

    本文重点: 使用RETIAN,INPUT在每次循环执行时保留上一次PDV中的变量值. SUM语句和SET语句会自动RETAIN变量. 1. RETAIN语句 1.1 Example 1 先来看看在DA ...

  2. SQLServer 一些有用的语句

    SET STATISTICS TIME ON 记录查询的相关数据 生成随机Guid SELECT NewID() 按照某一列排序并生成序号 select Row_Number() OVER (ORDE ...

  3. 笔试题: 数据库 已看1 一些关键的sql语句练习 和选择题 有用 sql语句练习 挺好

    一.     选择题 1.SQL语言是( C )语言. A.层次数据库 B.网络数据库 C.关系数据库 D.非数据库     redis 是 3.如果在where子句中有两个条件要同时满足,应该用哪个 ...

  4. mysql很有用的语句

    1)删除表内所有数据: 再添加数据时,如果设有自动增加的id,那么id也会重置. truncate table 表名; 2)创建结构相同的数据库表 create table 数据库名.新表名 like ...

  5. mysql不常用但很有用的语句整理

    mysqld_multi多实例停止.启动 mysqld_multi --defaults-file=/etc/my.cnf start 1,2 mysqld_multi --defaults-file ...

  6. 有用sql语句一

    DECLARE @retval int, @param1 int EXECUTE @retval=master.dbo.xp_fileexist 'D:\TkSoft\SamplePic\Fabric ...

  7. SAS笔记

    SAS基础知识 SAS里面的PROC一览 The ACECLUS Procedure : 聚类的协方差矩阵近似估计(approximate covariance estimation for clus ...

  8. SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(1)系统简介和编程基础 1. SAS系统简介 1.1 SAS是先编译后执行的语言,data步标志着编译的开始. 数据指针:当前内存缓存区, ...

  9. 【转】SQL常用的语句和函数

    原文链接:http://www.cnblogs.com/mailingfeng/archive/2013/01/07/2850116.html order by 的数值型灵活使用 select * f ...

随机推荐

  1. 全栈之路-杂篇-前端Http请求封装优化

    在项目开发过程中,代码的封装是很有必要的,我觉得这是程序员进阶的一个重要的技能,不会封装代码,你的代码看起来乱的一批,基本上不能维护,像一次性塑料袋一样,用完一次就失去了价值,这同时也会无缘无故的增加 ...

  2. NOIP2016提高A组 B题 【HDU3072】【JZOJ4686】通讯

    题目描述 “这一切都是命运石之门的选择.” 试图研制时间机器的机关SERN截获了中二科学家伦太郎发往过去的一条短 信,并由此得知了伦太郎制作出了电话微波炉(仮). 为了掌握时间机器的技术,SERN总部 ...

  3. HZOI2019序列

    题目链接:https://www.cnblogs.com/Juve/articles/11186805.html(密码是我的一个oj用户名) 题解: 这题我考试打的暴力,只有5分. 一开始理解错题意了 ...

  4. 【python之路45】tornado的用法 (三)

    参考:https://www.cnblogs.com/sunshuhai/articles/6253815.html 一.cookie用法补充 1.cookie的应用场景 浏览器端保存的键值对,每次访 ...

  5. Django项目:CMDB(服务器硬件资产自动采集系统)--03--03CMDB信息安全API接口交互认证

    #settings.py """ Django settings for AutoCmdb project. Generated by 'django-admin sta ...

  6. 深入浅出 Java Concurrency (12): 锁机制 part 7 信号量(Semaphore)[转]

    Semaphore 是一个计数信号量.从概念上讲,信号量维护了一个许可集.如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可.每个 release() 添加一个许可,从而可能释放 ...

  7. 禁用 ipv6

    # 禁用整个系统所有接口的IPv6 net.ipv6.conf.all.disable_ipv6 = # 禁用某一个指定接口的IPv6(例如:eth0, lo) net.ipv6.conf.lo.di ...

  8. Eureka配置问题

    在使用Spring Cloud做微服务开发中,经常会使用Eureka Server作为注册中心,如果配置不当可能会导致一些不可预期的异常信息.以下是我最近遇到的因为忽略了配置eureka.client ...

  9. ECMAScript 5 严格模式

    1. 变量必须使用var声明,杜绝不小心将本地变量声明成一个全局变量 在常规模式下,如果我们声明一个变量时省略了var关键字,解析引擎会自动将其声明为全局变量,但在严格模式下,会直接抛出异常,不会为我 ...

  10. Tensorboard在Win7下chrome无论如何无法连接的情况

    后记:其实发现原因后感觉自己很蠢,是自己开了一个软件叫adsafe,会屏蔽一些东西,所以我拼命的用自己的电脑ip都连不上,换成回环地址就好了,把软件关了也可以. 在无数种尝试后,终于在stackove ...