全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1262 3
2013-09-01
各位战友,我打算对变量:ageg进行编码,第一个组的设为0,第二个组为1,第三个为2....,试了了半天,用下面的程序实现了:

data d;
set c(keep=ageg);
code=lag(ageg);
if code ="" then code=ageg;
if code^=ageg then  k+1;
run;
现在有两个问题:1.k在初始化的时候不是 空缺么?怎么第一个年龄组成了 0?;2.if code^=ageg then  k+1; 对于code=ageg的记录,k 变量的值怎么也自动过来了? 想不通,请大家帮我解释一下,谢谢!

附件列表
图片.png

原图尺寸 5.33 KB

图片.png

二维码

扫码加我 拉你入群

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

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

全部回复
2013-9-1 21:33:58
在线等奥,会的帮我看一下吧,谢谢
二维码

扫码加我 拉你入群

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

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

2013-9-1 22:53:14
对于第一个问题, sas首先对程序进行编译, 遇到k+1这个语句的时候, 会根据这个语句的特点把k值置为0, 这一步在data步开始执行之前, 所以虽然你觉得, 读取第一条obs的时候, 按照条件并没有给k赋值, k还是有一个起始值0, 就是因为赋值是在执行并读取第一条obs之前. 对于第二个问题, data步中的变量进行运算, 就如同retain一样, 在指针读取新一条观测时, 并不会把k置为空值, 而是保留之前的值. 你想想呀, 要不然, k+1这个命令的结果不只能是1了吗.
二维码

扫码加我 拉你入群

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

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

2013-9-1 23:03:02
谢谢藤兄的详细解答,我再研究一下,多谢!
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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