IML的条件与循环 | 【SAS Says·扩展篇】IML:3.编程

【SAS Says·扩展篇】IML

分6集,回复【SASIML】查看全部:

  • 入门 | SAS里的平行世界
  • 函数 | 函数玩一玩
  • 编程 | IML的条件与循环
  • 模块 | 5分钟懂模块
  • 穿越 | 矩阵与数据集的穿越
  • 作业 | 编一个SAS回归软件

这是一段“资产收益率情景到评级情景的映射”的SAS程序,出自《金融计算与建模》(朱世武,282页):

代码中既用到了循环语句(do .. to ..),也用到了条件语句(if then),本文我们就来认识一下IML模块中的循环与条件语句。

点击查看上两节: 【SAS Says】扩展篇:IML(1):IML入门 【SAS Says】扩展篇:IML(2):函数


【SAS Says · 扩展篇】IML:条件与循环

1

IF-THEN 语句

IF-THEN语句,作为条件语句,虽然用法与其他语言没有什么区别,但是这里是用在矩阵上,那么就有很多方面需要注意。比如,

If a<b then statement.

这里的a和b是矩阵,那么请问,当我在比较a和b时,我在比较什么?

a<b,比的是a中的每个元素和b中相对应的元素,

if a<b,这个条件指的是a中所有元素都要小于b中所有元素,然后才会执行后面的语句,比如:

例子

proc iml; a={1 2, 3 -4}; b={1 -1, 0 1}; if a<b then print 1; else print 0; quit;

那么,假如我想把条件换成a中有任何一个元素小于b中相对应的元素,就执行后面的语句,该怎么写程序?很简单,加一个any函数:

例子

proc iml; a={1 2, 3 -4}; b={1 -1, 0 1}; if any(a<b) then print 1; else print 0; quit;

如果执行语句部分,有多条要执行的怎么办?和SAS base一样,用do来执行:

例子

proc iml; a={1 2, 3 -4}; b={1 -1, 0 1}; if any(a<b) then do; print 1; print a; end; quit;

记得要加end啊。

2

循环语句

(1)DO To BY

Do variable=start TO stop BY increment; Statement; End;

比如:

例子

proc iml; do i=10 to 100 by 20; print i; end; quit;

(2)DO WHILE

Do while (expression); Statement; End;

比如:

例子

proc iml; i=10; Do while (i<100); print i; i=i+30; end; quit;

(3)DO UNTIL

例子

proc iml; i=10; do until (i>100); print i; i=i+30; end; quit;

(4)用do语句导入数据

Infile ‘数据文件路径’; Do data; Input v1; x=x//v1; End;

比如,有一个数据文件testSet.txt

该文件在D盘下面,把它读入SAS的矩阵模块中,编程一个列向量。

例子

proc iml; infile 'D:\testSet.txt'; do data; input a; x=x//a; end; print x; quit;


原文发布于微信公众号 - 数说工作室(shushuojun)

原文发表时间:2015-12-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏简书专栏

Python数据科学库-小测验

答:np.arange、np.array、np.ones、np.zeros、np.full

19210
来自专栏人工智能

如何使用tableaux进行逻辑计算

原文作者:Miguel Diaz Kusztrich

90480
来自专栏PPV课数据科学社区

【学习】《R实战》读书笔记(第二章)

“读书会是一种在于拓展视野、宏观思维、知识交流、提升生活的活动。PPV课R语言读书会以“学习、分享、进步”为宗旨,通过成员协作完成R语言专业书籍的精读和分享,达...

36690
来自专栏小樱的经验随笔

零基础学并查集算法

并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(pa...

56380
来自专栏阮一峰的网络日志

贝叶斯推断及其互联网应用(三):拼写检查

(这个系列的第一部分介绍了贝叶斯定理,第二部分介绍了如何过滤垃圾邮件,今天是第三部分。) 使用Google的时候,如果你拼错一个单词,它会提醒你正确的拼法。 比...

425120
来自专栏用户2442861的专栏

常见的计算机专业词汇

   作为计算机相关专业学生,面试或者笔试时不可避免地会遇到与专业相关的问题,而考核专业问题的时候,又不可避免地涉及到很多专业词汇,这就需要求职者掌握好常见的...

33720
来自专栏大数据文摘

你的数据科学python编程能力过关吗?看看这40道题你能得几分

17430
来自专栏Golang语言社区

麻将游戏数据结构和AI算法

用休息时间零零散散写完了网络麻将游戏,感觉其中有不少值得记录的东西。 基础数据结构     数据结构确定决定了程序的开发难易程度,就像是游戏的骨架,对于电脑AI...

1.1K20
来自专栏一心无二用,本人只专注于基础图像算法的实现与优化。

SSE图像算法优化系列八:自然饱和度(Vibrance)算法的模拟实现及其SSE优化(附源码,可作为SSE图像入门,Vibrance算法也可用于简单的肤色调整)。

  Vibrance这个单词搜索翻译一般振动,抖动或者是响亮、活力,但是官方的词汇里还从来未出现过自然饱和度这个词,也不知道当时的Adobe中文翻译人员怎么会这...

68980
来自专栏用户2442861的专栏

2014美团网笔试题目(总结)

http://blog.csdn.net/wzy_1988/article/details/12438143

20210

扫码关注云+社区

领取腾讯云代金券