全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
11098 8
2014-03-09
_n_:首先是观测序号这个自动变量,每次你set <table> 到一个数据集中的时候,SAS默认是逐行导入的,每行导入的时候都会赋值到_n_这个变量里面;使用方法和point相似,可以具体比较一下,当然_n_使用的时候只能用if语句而不能用where语句;
eg.
data a;
set b;
if _n_=3;/*导入第3行*/

where _n=3_; /*会报错*/

point的作用也是导入固定的行数,但是我们使用point的时候必须要和stop语句一起使用;
eg.
data a;
do i=1 to (b的行数) by 2;
set b point=i;
end;
stop;
run; /*这样就可以导入b的奇数行到a中*/

_num_ _char_:这两个变量时默认的所有数值变量和所有字符变量;
平时使用的不太多,但是在iml的矩阵模块里面这两个变量就很重要了;
proc iml;
use a; /*a为一个数据集*/
read all var _num_ into aa;/*把所有的数字型数据导入到aa矩阵中*/
read all var _char_ into aa;/*把所有的字符型数据导入到aa矩阵中*/

还有比较多的是set过程中产生的自动变量,运用它们会使导入数据变得更加简单快捷
1、
end=<variable> 赋值到一个变量(自己设定) 当导入到最后一行的时候,这个变量的值就为0;
在金融计算中,我们很多时候都只是需要一个变量的总和,再来计算多个总和的比例;
eg.
data a;
set b end=a; /*b中有 b1 b2 两个变量,我们只想计算b1总值 和b2总值的比例*/
sumb_1+b1;
sumb_2+b2;
if a=1;
run;

/*a这个数据集中就只有b1和b2的总值了*/

2、last.variable 和first.variable;
同样是在金融计算中,我们有可能有时候只想知道某个数据一年中的最后一个值,比如计算年收益率,那么我们只需要得到每年的最后一个收盘价再进行比较就可以了;
proc sort data a;
by year;/*year=yearpart(date),可以把年这个变量从时间变量中提取出来*/

data a;
set a;
by year;
if last.year;/*那么就可以得到每年的最后一个值*/

需要注意的是last.variable 一定要和by variable一起使用,因为它是按照by分组后产生的最后一个;




/*自己随手整理的一小部分,但是在处理实际问题的时候实用性还是很大的*/




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-3-9 21:05:36
受益匪浅!谢谢无私分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-3-9 21:08:34
flyloop 发表于 2014-3-9 21:05
受益匪浅!谢谢无私分享
thx~~~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-3-9 21:48:48
受益匪浅!谢谢无私分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-1-21 16:04:05
intheangel 发表于 2014-3-9 21:08
thx~~~
不错,谢谢分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-4-27 12:40:23
谢谢分享~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群