请选择 进入手机版 | 继续访问电脑版
楼主: intheangel
10565 8

[学习分享] SAS中一些自动变量的使用小心得 [推广有奖]

  • 3关注
  • 89粉丝

VIP

副教授

25%

还不是VIP/贵宾

-

威望
1
论坛币
49842 个
通用积分
6.1883
学术水平
152 点
热心指数
168 点
信用等级
122 点
经验
12931 点
帖子
480
精华
0
在线时间
475 小时
注册时间
2013-11-22
最后登录
2023-6-28

初级热心勋章

intheangel 学生认证  发表于 2014-3-9 12:43:24 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
_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分组后产生的最后一个;




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




二维码

扫码加我 拉你入群

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

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

关键词:Variable Point Where First rpart SAS

我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶
flyloop 发表于 2014-3-9 21:05:36 |显示全部楼层 |坛友微信交流群
受益匪浅!谢谢无私分享

使用道具

intheangel 学生认证  发表于 2014-3-9 21:08:34 |显示全部楼层 |坛友微信交流群
flyloop 发表于 2014-3-9 21:05
受益匪浅!谢谢无私分享
thx~~~
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

使用道具

mycpcw 发表于 2014-3-9 21:48:48 |显示全部楼层 |坛友微信交流群
受益匪浅!谢谢无私分享

使用道具

420948492 发表于 2015-1-21 16:04:05 |显示全部楼层 |坛友微信交流群
intheangel 发表于 2014-3-9 21:08
thx~~~
不错,谢谢分享

使用道具

谢谢分享~

使用道具

小呆愣 发表于 2017-5-25 15:26:59 |显示全部楼层 |坛友微信交流群
  多谢分享

使用道具

gh779 学生认证  发表于 2018-11-17 11:31:20 |显示全部楼层 |坛友微信交流群
很棒!!

使用道具

mmpjj 发表于 2019-1-24 17:33:10 |显示全部楼层 |坛友微信交流群
当最后一行时 end= variable,variable取值为1,end和point不一样,还有end = variable,而point = values

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-17 05:58