与 iml 相关分析sas的 sas/iml 产品没有

SAS系统模块简介 - 简书
SAS系统模块简介
SAS系统是由众多模块组成的系统,其中Base SAS模块是SAS系统的核心,其它各模块均在Base SAS提供的环境中运行,用户可选择需要的模块与Base SAS一起构成一个用户化的SAS系统,以下为模块功能介绍:
1. Base SAS
Base SAS作为SAS系统的核心,负责数据管理,交互应用环境管理,进行用户语言处理,调用其它SAS模块。Base SAS 为SAS系统的数据库提供了丰富的数据管理功能,还支持标准的SQL语言对数据进行操作。Base SAS能够制作从简单列表到比较复杂的统计报表。 Base SAS可进行基本的描述性统计及基相关 系数的计算,进行正态分布检验等。
2. SAS/GHAPH
SAS/GHAPH可将数据及其包含着的深层信息以多种图形生动地呈现出来,如直方图、圆饼图、星形图、散点相关图、曲线图、三维曲面图、等高线图及地理图等。SAS/GHAPH提供一个全屏幕编辑器,提供多种设备程序,支持非常广泛的图形输出设备以及标准的图形交换文件。
3. SAS/ASSIST
SAS/ASSIST为SAS系统提供了面向任务的菜单界面,借助它可以通过菜单系统来使用SAS系统其它产品。它自动生成的SAS程序既可辅助有经验的用户快速编写SAS程序,又可帮助用户学习SAS。
SAS/AF是一个应用开发工具。用户使用SAS/AF可将包含众多功能的SAS软件作为方法库,利用 SAS/AF的屏幕设计能力以及SCL语言的处理能力来快速开发各种功能强大的应用系统。SAS/AF也了采用了OOP(面向对象编辑)技术,使用户可方便快速开发各类具有图形用户界面(GUI)的应用系统。
5. SAS/EIS
SAS/EIS是决策工具,也是一个快速应用开发工具。SAS/EIS完全采用新兴的面向对象的编程模式(OOP)。EIS以生动直观的方式(图或表)将关键性或总结性信息呈现给使用者。
6. SAS/ACCESS
为了对众多不同格式的数据进行查询、访问和分析,SAS/ACCESS提供了与目前许多流行数据库软件的接口,利用SAS/ACCESS,可建立外部其它数据库的一个统一的公共数据界面。SAS/ACCESS提供的接口是透明的和动态的。用户不必将此文件当作真正存储着数据 的SAS数据集一样使用,而只需在SAS中建立对外部的描述(即VIEW)文件,便可将此文件当作真正存储着数据的SAS数据集一样使用。对一些经常使用的外部数据,可以利用SAS/ACCESS将数据真正提取进入SAS数据库。 SAS/ACCESS 提供的接口是双向的,既可将数据读入SAS,也可在SAS中更新外部数据或将SAS数据加载到外部数据库中。目前,SAS/ACCESS支持的数据库主要有:IML-DL/I, SQL/DS, DB2, ADABAS, Rdb, ORACLE, Sybase, INGRES, Informix, DBF/DIF, ODBC等。
7. SAS/STAT
SAS/STAT覆盖了所有的实用数理统计分析方法,是国际统计分析领域的标准软件。 SAS/STAT提供了十多个过程,可进行各种不同模型或不同 特点数据的回归分析,如正交回归/面回归、响应面回归、logistic回归、非线性回归等,且具有多种模型选择方法。可处理的数据有实型数据、有序数据和属性数据,并能产生各种有用的统计量和诊断信息。在方差分析方面, SAS/STAT为多种试验设计模型提供了方差分析工具。另外,它还有处理一般线性模型和广义线性模型的专用过程。在多变量统计方面, SAS/STAT为主成分分析、典型相关分析、判别分析和因子分析提供了许多专用过程。SAS/STAT还包含多种聚类准则的聚类分析方法。
SAS/QC为全面质量管理提供了一系列工具。它也提供一套全屏幕菜单系统引导用户进行标准的统计过程以及试验设计。SAS/QC提供了多种不同类型控制图的制作与分析。Pareto图(排列图)可用于发现需优先考虑的因素,Ishikawa图(鱼骨图)可用于直观地进行因果分析。
9. SAS/ETS
SAS/ETS提供丰富的计量经济学和时间序列分析方法,是研究复杂系统和进行预测的有力工具。它提供方便的模型设定手段、多样的参数估计方法。
10. SAS/OR
SAS/OR提供全面的运筹学方法,是一种强有力的决策支持工具。它辅助人们实现对人力、时间以及其它各种资源的最佳利用。 SAS/OR包含通用的线性规划、混合整数规划和非线性规划的求解,也为专门的规划问题提供更为直接的解决办法,如网络流问题、运输问题、分配问题等。
11. SAS/IML
SAS/IML提供功能强大的面向矩阵运算的编程语言,帮助用户研究新算法或解决SAS中没有现成算法的专门问题。SAS/IML中的基本数据元素是矩阵。它包含大量的数学运算符、函数和例行程序,用户用很少的语句便可执行很复杂的计算过程。
12. SAS/WA
SAS/WA(Warehouse Administrator)是建立数据仓库的集成工具,它在其它SAS软件的基础上提供了一个建立数据仓库的管理层,包括:定义数据仓库和主题,数据转换和汇总,汇总数据的更新,Metadata的建立、管理和查询,Data marts和Info marts的实现。
13. SAS/MDDB Server
SAS/MDDB Server是SAS的多维数据库产品,主要用于在线分析处理(OLAP),可将从数据仓库或其它数据源来的数据以立体阵列的方式存储,以便于用多维数据浏览器等工具快速和方便地访问。
14. SAS/IntrNet
SAS/IntrNet为SAS Web应用提供了数据服务和计算服务,包括htmSQL,它为一UNIX Web服务器的CGI程序,使得能通过支持Web浏览器动态查询SAS数据或外部的关系型数据库;SAS ODBC Driver使得能通过支持ODBC的Windows Web服务器来访问SAS数据;SAS Driver for JDBC使得可以通过Java applet来查询SAS数据; SAS/IntrNet Application Dispatcher使得可以通过Web浏览器动态地递交SAS程序到SAS应用服务器执行,并将结果返回浏览器。
15. SAS/GIS
SAS/GIS集地理位置系统功能与数据的显示分析于一体。它提供层次化的地理信息,每一层可以是某些地理元素,也可与用户定义的主题(例如:人口、产值等)相关联。用户可交互式地缩小或放大地图,设定各层次显示与否,并利用各种交互式工具进行数据显示与分析。
16. SAS/ITSV
IT Service Vision(ITSV)是企业的全面IT服务的性能评估和管理的软件,这些IT服务包括计算机系统、网络系统、Web服务器和电话系统等。ITSV将不同来源的数据进行整理和组织,存放于性能数据仓库中,用GUI或批处理的方式产生组织任意层面的报告。系统程序员及网络工程师能借此识别、研究并解决有关问题,业务分析人员能借此制定资源管理的总体策略,CIO和数据中心经理能借此定期地得到所需的IT运作的汇总和分析报告。
17. SAS/CFO Vision
SAS/CFO Vision用于财务整合和报告,内部包含了会计知识,为日常财务工作提供了现成的程序,并提供了访问所有主要数据源的接口。它主要用于;访问财务和非财务的有关住处整合财务数据,通过一个财务信息仓库来管理业务结构,通过财务报告和分析帮助理解财务的结果,并在组织内交流关键的业务结果信息。
引用莎翁的一句话: &An honest tale speeds best being plainly told&. William Shakespeare, King Richard III 诚实的故事就算平淡地描述,也是传播得最好的。(哈哈,个人理解翻译) 内容导图展示...
//我所经历的大数据平台发展史(三):互联网时代 o 上篇http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02 编者按:本文是松子(李博源)的大数据平台发展史...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
第一章1.设计现代OS的主要目标是什么?答:(1)有效性 (2)方便性 (3)可扩充性 (4)开放性2.OS的作用可表现在哪几个方面?答:(1)OS作为用户与计算机硬件系统之间的接口(2)OS作为计算机系统资源的管理者(3)OS实现了对计算机资源的抽象3.为什么说OS实现了...
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式...
springBoot + gradle 配置Druid数据连接池 首先在build.gradle文件中加入两个依赖: 然后直接在配置文件中,配置需要监控的数据库信息就好了,不需要在application.yml中添加配置,(配置文件需要自己另外新建的) packagecom...
就在前几天一个风高月黑的晚上, 心血来潮的我美滋滋的发了一张自拍 几分钟之后就收到一波赞和各种被夸的评论 我沾沾自喜得沉浸在个人世界里挣脱不出~ 突然收到一个似曾相似的头像的点赞 艾玛,这不是我多年躺尸在我微信通讯录的前蓝票嘛 一年多了,他怎么还在世上呢! 过了一分钟,又收...
实际上当前(日)官方发布的是1.1.0正式版,2天前发布1.0.2,三天前发布1.0.1,而1.0.0版本只是七天前发布,可见当前更新非常频繁,尤其是1.0.0正式版发布之后,七天内发布四个版本。 终于1.x正式版了,0.1x 测试版这么久了,都不容易。随...
九个月后的茂茂似乎有了“我”的意识,每次给他拿在手里吃的东西,反过来说给麻麻吃点啊,都是躲开,扭头,拒绝……,爷爷奶奶也一样要不走,要不就是把东西放在你手里虚晃一圈,所谓“逗你玩玩而已,别当真!”这时我还没有教育他要分享。因为区别“我”与他人是这个阶段的意识。还有一次,带他...
原Servlet模板 修改方法 找到MyEclipse2014(其他版本也差不多)的安装目录下的plugins文件,并打开 在搜索框里查找这个文件(如图) 打开此压缩文件(注意不要解压,直接打开就好),打开文件找模版templates,在template下再找servlet...苹果/安卓/wp
积分 6018, 距离下一级还需 4162 积分
权限: 自定义头衔, 签名中使用图片, 隐身, 设置帖子权限, 设置回复可见
道具: 涂鸦板, 彩虹炫, 雷达卡, 热点灯, 显身卡, 匿名卡, 金钱卡, 抢沙发, 变色卡, 提升卡, 沉默卡, 千斤顶下一级可获得
权限: 签名中使用代码
购买后可立即获得
权限: 隐身
道具: 金钱卡, 变色卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
本帖最后由 有福有德 于
19:58 编辑
& && &SAS/IML Studio软件的前身是SAS Stat Studio,如今的SAS/IML Studio软件是一种新的统计程序软件,提供了高度灵活的编程环境,我们可以通过SAS/STAT或者SAS/IML模块进行统计分析与报告,而SAS/IML Studio这个过程中的分析是动态同步的,包括图形与表格,也就是说,我们不必重新运行程序,只需改动原始数据就可以实现分析的同步呈现。这里的同步呈现或动态性,如果大家接触过一段时间的SAS,一定不会陌生,这个功能在很多模块里都有不同程度的体系,尤其是在SAS/INSIGHT模块[1]里,这与SAS/IML Studio很相似。& &&&(1)SAS/IML Studio软件程序部分作为SAS家族的成员,理所当然的有其“高傲”的传统,程序驱动的数据分析过程就是其一,软件SAS/IML Studio里的程序叫做IML增强型(IMLPlus),这种语言在SAS/IML基础上得到改进,尤其是图形绘制和函数调用等内容上有了很大的进步,例如:可以直接调用C++, Java,FORTRAN等软件的程序,实现call的计算功能。值得一提的是SAS/IML Studio在与R的协调应用上有很大的发展,而且不久的未来可以实现在SAS/IML Studio中直接运行R程序。& && &R是一个开源性质的软件,也是以矩阵语言为基础,所以开源使他能很快的实现很多前沿的模型或算法,以矩阵语言为基础使他与SAS/IML Studio有了共同点。SAS9.2后(包括相对应的base、IML模块)的SAS/IML Studio3.3或SAS/IML Studio3.4提供了R的接口,在这里我们可以轻易的实现SAS、SAS/IML、SAS/IML Studio和R间程序的交换或协调。我想这种组合在数据分析领域,是很美的——新鲜、高雅,同时兼顾了时尚与权威、开放与谨慎。所以可以看出这种组合的应用很有前景。简单介绍如例(需先安装R):submit / R;
rx &- matrix( 1:3, nrow=1)& && && && && && && && && &#定义向量序列1到3&&rm &- matrix( 1:9, nrow=3, byrow=TRUE)& &# 3乘3的矩阵&&rq &- rm %*% t(rx)& && && && && && && && && && && &&&&&#计算矩阵&&print(rq)& & & && && && && && && && && && && && && && && && && & #输出结果rq& &(2)SAS/IML Studio的菜单部分& &&&菜单部分也是SAS/IML Studio软件的一个特点,大家如果使用过SAS菜单就会发现,这方面做的不是很好,尤其是界面的不够美观,提示不清晰等,但SAS/IML Studio软件的菜单明显要好的多,首先也是打开数据,直接在SAS/IML Studio中打开SAS逻辑库,然后出现的菜单及其操作几乎和SAS/INSIGHT模块相同,这里值得一提的是SAS/IML Studio在实现boostrap、模拟等方面也是很不错的选择。另外,SAS/IML Studio里嵌入了稳健回归的功能,相应的操作是Analysis——model fiting——robust regression。& && &我们知道,STATA做稳健回归,很容易就可以完成,只需做一小部分设置就行,spss几乎没法做,需要借助外部接口,通过其他软件实现(当然严格来说,这不能算spss功能),SAS做起来有点麻烦,大家可以自己查阅SAS/STATA手册的REBUSTREG过程有详细的讲解。下图是SAS/IML Studio软件稳健回归的结果:
19:47:41 上传
& && & 总结来看,SAS/IML Studio可谓层层继承(SAS、SAS/IML、SAS/IML Studio),每个功能都带有浓厚的传统家族气息,人家说“富不过三代”,同时在迎来第四代语言的冲击下,这种气息是不可一世还是高贵之傲慢?我不知道该怎么回答,但作为SAS的追随者,也许他的前景堪忧,但我仍希望留在队伍里,不过介于人家多年最佳雇主的名号,我的担心基本应该是多余的。
[1]http://bbs.pinggu.org/forum.php?mod=viewthread&tid=1503264&highlight=SAS%2FINSIGHT注:部分引自SAS官方。
14:24:11 上传
观点有启发
总评分:&经验 + 240&
论坛币 + 120&
学术水平 + 9&
热心指数 + 8&
信用等级 + 7&
本帖被以下文库推荐
& |主题: 2385, 订阅: 29
& |主题: 115, 订阅: 143
版主好水平 学习了&&
总评分:&热心指数 + 1&
SAS可以通过IML以无缝方式来调用R语言 震撼啊
IML不太好用&&还是MATLAB适合做矩阵
钓鱼岛和南沙诸岛都属于中国的!
谢谢分享。。。。
谢谢楼主分享
鼓浪@听涛 发表于
IML不太好用&&还是MATLAB适合做矩阵agree!!
受教了,期待更多楼主的大作。
看看 学习一下
唯一要关心的事情,就是读书和思考。
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
论坛法律顾问:王进律师List for SAS fans and programmer
Tags: , , , , , , Filed in惊呆了,sas还可以这样之iml进阶
接着上周的内容,这一周来介绍iml中的循环还有一些运用到数据集的代码,iml也像sas的代码一样可以定义宏的,但是iml的宏貌似叫模块。现在说的这些iml代码都是为了后面我们用sas写综合评价法做的铺垫。如果心急的同学可以先查下综合评价法哦,我大学的时候学这的算法的时候是在上运筹学课上的,其实要是数据少,用手算也是可以的,就是一些矩阵的加减乘除。
Iml中的循环语句:
控制语句中的DO, END、循环DO, END、选择语句IF-THEN/ELSE以及DO-WHILE, END、
DO-UNTIL, END与DATA步类似,不再重述。
usesashelp.
setinsashelp.class POINT0;
readnextvar{age};
代码解释:首先将sashelp.class这个数据集定义成一个矩阵,use这里相当于把sashelp.class变成一个矩阵,然后setin跟data步中的set的意义是一样的,point 0是指向第一条观测,这里即使指向矩阵的第一行,接下来就是使用循环DO, END,将age这一列的数字加总,得到sum。
命令语句:
以下这是命令语句
命令语句主要是看矩阵的一个属性,可以参照以下例子:
a={123, 456, 789};
shownames;/*显示所有矩阵的信息*/
store/*将矩阵存储在库中*/
free /*释放矩阵内容,增加可用空间 */
showstorage;/*显示存储库中的矩阵*/
上一个格显示的是两个矩阵的基本信息,showstorage这的语句对应的是第二个格,显示了有两个矩阵,因为之前的语句有“store/*将矩阵存储在库中*/”将矩阵存在库中了。
下面我们来执行一个小小的例子:回归模型的OLS估计。
y={1,5,9,23,36};
b=inv(t(x)*x)*t(x)*y;
sse=ssq(r);
dfe=nrow(x)-ncol(x);
这里面的b简单粗暴的说就是算参数,虽然这里的x只有一个变量,但是要记住x可是3*5的矩阵,x如果在数据集中是x1、x2、x3所以b就三个参数,yhat是预测值与原始值之间的差,如果没记错就残差,如果我说错了,别喷我,我功课一直不是很好,sse是取自变量矩阵r所有元素的平方和, SSQ函数取自变量矩阵所有元素的平方和。Dfe是自由度,mse是均方差。
创建自定义模块(相当于sas里面的宏)
尽管 IML 本身有很多函数和子程序,但并不能满足所有需要。用户可以自己定义具有
一定功能的子程序或者函数。这通过创建模块和运行模块来实现。此外,模块还可以产生局
部变量,形成一个局部变量列表。
模块以 Start 开始,以Finishi 结束。一般形式为
START &模块名 & & ( 自变量列表 ) & & GLOBAL( 自变量列表 ) & ;
FINISH &模块名 & ;
如果省略模块名,则模块取默认名 main
模块定义好之后,可以用run 或者Call 语句运行,一般格式为
RUN &模块名 & & ( 自变量列表);
CALL&模块名 & & ( 自变量列表);
当遇到用户自定义的模块名与SAS/IML 固有的模块重名时,用RUN 运行用户自定义模块,
用Call 运行SAS/IML 固有的模块。
start /* 定义模块开始 */
xpxi=inv(t(x)*x); /* 矩阵X'X的逆 */
beta=xpxi*(t(x)*y); /* 参数估计 */
yhat=x* /* 预测值 */
resid=y- /* 残差 */
sse=ssq(resid); /* SSE */
n=nrow(x); /* 观测值数 */
dfe=nrow(x)-ncol(x); /* 误差自由度DF */
mse=sse/ /* MSE */
cssy=ssq(y-sum(y)/n); /* 校正平方和 */
rsquare=(cssy-sse)/ /* RSQUARE */
print,"Regression Results",
stdb=sqrt(vecdiag(xpxi)*mse); /* 参数估计的标准差 */
t=beta/ /* 参数的t检验 */
prob=1-probf(t#t,1,dfe); /* p-值 */
print,"Parameter Estimates",
finish /* 模块结束 */
/*执行自定义模块*/
y={1,5,9,23,36};
run /* 执行REGRESS 模块 */
reset /* 打开自动打印 */
covb=xpxi* /* 参数估计协方差阵 */
s=1/sqrt(vecdiag(covb));
corrb=diag(s)*covb*diag(s); /* 参数估计的相关系数 */
x1={1,2,3,4,5}; /* 矩阵X的第二列 */
x=orpol(x1,2); /* 产生正交多项式,改变自变量观测矩阵 */
reset /* 关闭自动打印 */
run /* 运行REGRESS */
callpgraf(xy,'r','x','Residuals','Plot of Residuals');
callpgraf(xyh,'*','x','Predicted','Plot of Predicted Values');
newxy=(x1//x1)||(y//yhat);
n=nrow(x1);
label=repeat('y',n,1)//repeat('p',n,1);
callpgraf(newxy,label,'x','y','Scatter Plot with Regression Line');
后面这段callpgraf是调用pgraf这的画图程序,
xy=x1||这个的意思就是x1和残差画图。具体可以自己执行以下之后看图,这玩意真的不是我可以解释的。结果图好长,你们自己跑吧,代码我调试过的。
(1)不带变量模块的定义:如果定义的模块不带变量,则模块中定义的变量为全局变量(Global),模块不会产生局部变量,系统不会产生局部符号表(local symbol table)
a=10; b=20; c=30; d=90;
start mod1;
finish mod1;
这里的不带变量的模块的意思就是,定义宏的时候不带参数,直接用过程步中已经定义好的变量,这里的a=10; b=20;相当于sas中%let a=10;
(2)带变量模块的定义:也可以定义带变量(参数)的模块。带变量的模块在执行时需要用已知的值取代模块的变量(参数),已知的值可以是常数,也可以是已经定义过的变量。带变量的模块中定义的变量为局部变量,模块编译时IML会产生该模块的局部变量表,局部变量只在所在的模块中有效。
例子(注意):
a=10; b=20; c=30; d=90;
start mod2(x,y);
finish mod2(x,y);
run mod2(a,b);
这里面的x y就像宏里面的定义的参数了,如果这样子定义了之后,那么x y就是这个模块里面可以改变的变量,但是这里面其他的变量就是固定的了。
(3)函数模块的定义:函数模块是返回单一值(函数值)的模块,必须在模块中指定返回值变量。
start add(x,y);
return(sum);
a={9 2,5 7};
b={1 6, 8 10};
c=add(a,b);
函数模块能够相互调用:
d=add(add(6,3),add(5,5));
函数是模块的一种,因此函数中定义的变量为局部变量。SAS/IML中的变量分为全局变量和局部变量,所有的变量都存放在符号表中。模块之外定义的变量存放在全局符号表中,为全局变量,不带变量的模块中定义的变量也是全局变量,而带变量的模块中定义的变量存放在该变量的局部符号表中,为局部变量。所有局部变量表中的变量都是暂时的,只在所在的模块执行时才有意义,一旦所在模块结束执行,这些变量就不存在了。当然,可以通过变量传递方法将局部变量的值传递给全局变量。
(4)Global从句:
格式: Global(变量名)功能,在定义带变量模块时,将模块中的局部变量说明为全局变量(实际是将局部符号表中的变量和全局符号表中的变量建立一一对应关系)。
a=10; b=20; c=30; d=90;
start mod4(x,y) global(c);
finish mod4;
run mod4(a,b);
因为定义了c为全局变量,那么尽管之前已经定义了,但是还是可以被改变,而且一旦c为全局变量之后,除非c重新被定义,不然一直都是等于40;
SAS 数据集操作
IML可以将SAS环境下的SAS数据集读为IML中的矩阵,从而可以用IML编程对SAS数据
集实施操作。同时,IML也可以把矩阵读出为SAS数据集。这种交互式操作极大地方便了IML编程的对象,成为SAS系统的一大优势。
I、打开SAS数据集
(1)USE语句:打开入SAS数据集。
格式: USE SAS数据集名&Var 选择变量 &Where(表达式)&&;
功能: 打开SAS数据集,为读出数据到IML中做准备。打开数据集后,可以采用命
令FIND, INDEX, LIST, and READ对数据集实施读出操作。
(2)EDIT语句:打开SAS数据集。
格式: EDIT SAS数据集名&Var 选择变量 &Where(表达式)&&;
功能: 打开SAS数据集,为读出数据到IML中和将IML中数据写入做准备。打开数据
集后可以用LIST, READ, INDEX, and FIND对数据集实施读出操作,也可以用
REPLACE, APPEND, DELETE, and PURGE实施读入操作。
(3)CREAT语句:创建新的SAS数据集。
格式: CREAT SAS数据集名&Var 选择变量&;
CREAT SAS数据集名&Var 选择变量& From 源数据名& [COLNAME=列名
ROWNAME=行名] & ;
功能: 创建新的SAS数据集并打开,供读入和写出。用APPEND语句将矩阵中的数
据读入新建的SAS数据,否则数据集中没有观测。
II、设置当前SAS数据集
只有当前数据集(current data set)才可以进行读写操作。当有多个已经打开的数据集时,
需要将目标数据集设为当前数据集。
USE 数据集名;SETIN 数据集名;将数据集设为当前数据数据集。
SETOUT 数据集名;将数据集设为当前输出数据集。
CREAT 数据集名;EDIT 数据集名; 数据集设为当前输出和输入数据集。
命令SHOW DATASETS;可以查看已打开输入、输出数据集和当前数据集,SHOW
CONTENTS;可以显示当前输入数据集的内容,包括变量名、类型、长度和观测个数。
III、设置当前观测
当前观测为最近一次读入、读出操作设定的。例如打开一个数据集后当前观测为第0条
观测,而如果用list命令或者用read命令进行操作时,当前观测改变为第1条观测。
use sashelp.
这里的“list ”是观察当前数据集的第一条观测,就是让你看下数据对不对,但是看全部就怕有些数据集太大。
usesashelp.
listcurrent;
setinsashelp.class point10;
listcurrent;
第一个数据集是整个sashelp.class,第二个数据集是从sashelp.class,的第十条开始读,即sashelp.class,中的第十条就是当前数据集的第一条。具体看下上面的结果以及sashelp.class数据集。
usesashelp.
listcurrent;
setinsashelp.class point10;
listcurrent;
加多一个句子“listall;”即看全部的观测,即结果为:
IV、列示观测值
List &范围关键词&Var 变量选择& &Where(表达式)&&;
(1)范围关键词:
ALL:所有观测
CURRENT:当前观测
NEXT &n&:下一个或者下n个观测
AFTER:当前观测后的所有观测
POINT 记录号:由记录号指定的观测。例如point 5、point {2 5 10}、point p、point(p+1)
等等,其中p是含有记录号的矩阵。
各种输入、输出操作的默认范围:
(2)变量选择:用Var从句选择变量集。
Var 变量选择
变量选择可以是:
·变量名列表:var {x1 x2 x3}
·包含变量名的矩阵: Var x;
·用“()”括起来的表达式:Var(’x1’:’x3’)
·关键词:_ALL_(所有变量)、_CHAR_(所有字符变量)、_NUM_(所有数值变量)
resetdeflib=/*逻辑库定位在sashelp中*/
use/*使用class数据集*/
listcurrent;/*看第一条观测*/
setinclass point10;/*从第十条观测开始*/
listcurrent;/*看当前数据集第一条观测*/
p={24,610};/*定义一个矩阵*/
listpointp var{name sex};/*取obs为2 4 6 10的name 和sex*/
q={'name''sex', 'height''weight'};/*重新组建矩阵,由四个变量组成*/
listpoint{358} varq;/*取矩阵q中3 5 8行的数据*/
(3)观测选择:Where(表达式)
格式:Where (variable comparison-op operand);
·variable 数据集中的变量;
·comparison-op为比较算符;
·operand为值、矩阵或者表达式
比较算符中除了常见的之外,还有几个用于字符比较的算符:
,只有当比较的矩阵中所有元素都满足where语句中的条件才成立。而对于算符
= ? =: =*,只要比较的矩阵中有元素满足where语句中的条件就成立。此外,where语句中的比较表达
式可以用&进行条件之间的交(且)运算,用|进行条件之间的并(或)运算。
resetdeflib=/*逻辑库定位在sashelp中*/
use/*使用class数据集*/
listallvar{name} where(sex='男');/*去name这一变量,只取性别为男的*/
n={name sex age};/*重新组建矩阵,n由3个变量组成*/
listallvarn where(name? '阿');/*看当前数据集所以观测中name含“阿”的*/
listallvarn where((name^? '阿')&(age&13));/*看当前数据集所以观测中name不含“阿”的且age大于13岁的*/
V、由SAS数据集创建矩阵
将打开的SAS数据集中的数据读入IML并形成矩阵是用Read语句实现的。读入的SAS数
据集必须是当前数据集。Read语句的一般格式为:
READ &范围 & & VAR 从句 & & WHERE(表达式) & & INTO 矩阵名 & ;
范围:给出要读入的观测的范围,all 表示读入所有观测,缺省则为当前观测。
Var 从句:选择要读入的变量。每个变量读入后形成一个列向量,列向量名为原先的变量名。Where(表达式):对读入的观测进行筛选,符合条件(使表达式成立)的观测被读入矩阵。矩阵名:为读入数据形成的矩阵命名。如果将读入的变量形成一个矩阵,则需要用 into 从句给矩阵命名。
注意:由于数据集中的变量分为字符型和数值型,而矩阵中的元素必须为同一类型的数据,在使用into 从句时不能将SAS 数据集中的数值型变量和字符型变量同时读入同一个矩阵。
如果执行这种的操作,SAS/IML 会按第一变量设定矩阵的性质,并将与第一变量数据类型不同的变量从矩阵中去掉。
use sashelp.
read all var {name age height weight};
read all var{name age height weight}
read all var _num_ into temp1;
print temp1;
因为数据集中的变量分为字符型和数值型,而矩阵中的元素必须为同一类型的数据,
在使用into 从句时不能将SAS 数据集中的数值型变量和字符型变量同时读入同一个矩阵。如果执行这种的操作,SAS/IML 会按第一变量设定矩阵的性质,并将与第一变量数据类型不同的变量从矩阵中去掉。所以出现了temp只有一列。
如果需要将数值型变量和字符型变量读入同个矩阵可以参考一下代码:
resetdeflib=/*逻辑库定位在sashelp中*/
use/*使用class数据集*/
q={'name''sex', 'height''weight'};
再来一个例子:
usesashelp.
readallvar_num_into female where(sex="女");
readallvar{name} into j where(name=:"罗");
readallvar{name} into a where(name?"阿");
readallvar{name} into al where((name?"阿")|(name?"阿"));
这里应该注意的是list是看数据集的观测,而print是看矩阵的值。
VI、由矩阵创建SAS数据集
用CREATE语句和APPEND语句可以从矩阵创建SAS数据集,矩阵的列形成数据集的变量,行形成数据集的观测。一个n×m矩阵形成具有m个变量和n个观测的数据集。CREATE语句打开一个新数据集作为输入输出数据集,APPEND语句把数据写入到数据集之内。
1)带有From选型的CREATE语句
CREATE SAS数据集名 FROM 矩阵名&[Colname=列变量名]&;
APPEMDFROM 矩阵名;
·选项Colname=列变量名给出SAS数据集的变量名,其中的列变量名以矩阵形式给出,如
Colname={‘age’}、Colnmae{‘age’ ‘weight’}等等。如果缺省该选项,则SAS数据以Col1、
Col2,……,为变量名
usesashelp./*使用sashelp.class数据集*/
readallvar{name age height weight};/*读取四个变量*/
htwt=height//*生成htwt变量*/
new=age||/*使用这两个变量组成矩阵new*/
createratio fromnew[colname={'age''h_w'}];/*将矩阵new赋予给ratio之后改名字。age为age htwt为h_w*/
appendfrom
2)带有VAR从句的CREATE语句
由于一个矩阵不能包含不同类型的数值(数值性和字符型),因此不能用htwt和name形
成矩阵,也就不能用CREATE FROM语句创建包含name和htwt的数据集。采用带VAR从句的CREATE命令可以做到这一点。
CREATE SAS数据集名 VAR{矩阵名列表};
·VAR从句中的矩阵必须是列向量,矩阵名之间用空格隔开,如果给出矩阵多于一列,则SAS
将所有列垒叠为一列,作为SAS数据集的列。
use sashelp.
read all var{name age height weight};
htwt=height/
create ratio1 var{name htwt};
close ratio1;
??注:CREATE语句要和APPEND一起使用。如果仅仅使用CREATE语句而没有APPEND语
句,则新数据集中没有观测。新数据集创建并完成必要操作后,要用CLOSE语句关闭数据集。将SAS数据集读入IML形成矩阵和用IML中的矩阵创建SAS数据集,实现了数据集和IML
矩阵的双向转换,使得用户可以在两种环境中自由“出入”,极大地方便了数据的处理和分
VII、SAS数据集的排序
排序SAS数据集读入IML形成的矩阵的列也是排序的,这会给有关的计算带来方便。SAS
数据集的排序可以在IML环境中直接进行。如果数据集处于打开状态,排序前需要用命令CLOSE关闭数据集。
格式:Sort SAS数据集名 &out=SAS数据集名& By &Descending& 排序变量名;
·选项out=SAS数据集名给出排序后生成的数据集名。缺省则替代原数据集;
·选项 Descending 实现按排序变量值降序排序,缺省则按升序排序。
use sashelp.
close sashelp.
sort sashelp.
sort sashelp.class out=class1
以上内容由https://wenku.baidu.com/view/7e21af45a929.html?from=search 这篇文章整理之后我个人在原来的代码上做了解释以及贴上了结果图。
文章很长,希望你找个静下心的时间仔细揣摩。
今天的更新就到这里吧,再见!
屁屁的sas数据分析
我叫詹大炮,一个做评分卡建模的95年少女
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点}

我要回帖

更多关于 iml工厂目录 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信