楼主: yingyang22
1304 3

变量分类很奇怪 [推广有奖]

  • 0关注
  • 0粉丝

已卖:696份资源

博士生

0%

还不是VIP/贵宾

-

威望
0
论坛币
1803 个
通用积分
0.1646
学术水平
2 点
热心指数
9 点
信用等级
1 点
经验
1069 点
帖子
93
精华
0
在线时间
342 小时
注册时间
2007-11-9
最后登录
2025-12-29

楼主
yingyang22 发表于 2013-9-1 21:29:06 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位战友,我打算对变量: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 变量的值怎么也自动过来了? 想不通,请大家帮我解释一下,谢谢!

二维码

扫码加我 拉你入群

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

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

关键词:变量分类 code Then keep Data 程序 记录

图片.png (5.33 KB)

图片.png

沙发
yingyang22 发表于 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了吗.

板凳
yingyang22 发表于 2013-9-1 23:03:02 来自手机
谢谢藤兄的详细解答,我再研究一下,多谢!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 04:53