前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAS-数据步中的几个常见的小语法...

SAS-数据步中的几个常见的小语法...

作者头像
Setup
发布2019-10-21 15:44:33
2.2K0
发布2019-10-21 15:44:33
举报
文章被收录于专栏:SAS程序分享号号号

今天写一写data步中的几个简单的小语法。

firstobs、obs、end

比较基础与常见的语法,如:firstobs,obs,end...,firstobs表示从数据集第某行记录开始,obs表示读取到第某行记录。end为一个“指针”指向最后一条记录。来看看一个例子~

代码语言:javascript
复制
data test1;
  set SASHELP.CLASS  end=last;
  if last then aa=1;
run;
data test2;
  set SASHELP.CLASS (firstobs=3 obs=5)  end=last;
  if last then aa=1;
run;

上面代码什么效果,其实对比一下生成的数据集结果就知道了,很容易理解相关的含义...

_N_

_N_这是一个很好的变量,为啥是一个很好的变量呢,_N_的值是对应数据集中的每一条记录的行号。其实就是所谓PDV里面的一个关键变量,什么是PDV呢,好吧,作为一个没有系统学习过和从没完整看完任何一本SAS书的小编,对PDV的概念用不了官方语句来描述出来,只有一个抽象的理解,PDV就相当SAS数据运行的中转站吧,数据集的一切操作要先拿到中转站在从中转站拿出来。应该也是不太准...

感觉知不知道PDV其实不太重要,不知道一样写程序...

代码语言:javascript
复制
data test3;
set SASHELP.CLASS ;
/*此处会出ERROR:ERROR: 变量 _N_ 不在文件“SASHELP.CLASS”中。*/
where _N_=3;
run;
data test4;
set SASHELP.CLASS ;
if _N_=3;
run;

看上面代码,用where就会出错,用if就不会出错,原因可以理解成where语句的执行是在中转站的入口(数据读入到PDV时)前起作用,而IF语句就相当在中转站出口(数据读出PDV)时起作用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAS程序分享号号号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • firstobs、obs、end
  • _N_
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档