楼主: fyp198744
2344 8

by 变量;first.变量的下一个观测怎么处理? [推广有奖]

  • 0关注
  • 1粉丝

讲师

2%

还不是VIP/贵宾

-

威望
0
论坛币
135 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
5181 点
帖子
257
精华
0
在线时间
258 小时
注册时间
2016-5-23
最后登录
2019-9-30

楼主
fyp198744 发表于 2016-8-22 15:59:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
namevaluep
jj

1

1

jj

2

1

jj

3

1

mm

5

3

mm

4

3

mm

1

3

mm

2

3

mm

6

3

cc

2

7

cc

5

7

我想要的结果是
namevaluep
jj

1

jj

2

1

jj

3

mm

5

mm

4

3

mm

1

mm

2

mm

6

cc

2

cc

5

7

也就是说变量name的分组的第二行观测保留,其他的都清空!
二维码

扫码加我 拉你入群

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

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

关键词:First 怎么处理 FIRS FIR IRS

沙发
wwang111 发表于 2016-8-22 16:19:41
data wanted;
  set test;
  by name value notsorted;
  if first.name then ord=0;
  ord+1;
  if ord ne 2 then call missing(p);
  drop ord;
run;

藤椅
fyp198744 发表于 2016-8-22 17:12:56
wwang111 发表于 2016-8-22 16:19
data wanted;
  set test;
  by name value notsorted;
好神奇啊!但是不太理解!为什么ord变量会根据by分组从1、2、3.。。。。这么增加呢?

板凳
wwang111 发表于 2016-8-22 17:38:57
每个name的第一条记录,ord的值设成了0;然后ord+1是一个sum statement,具体楼主可以看一下下面这个帖子6楼的附件:

https://bbs.pinggu.org/forum.php?mod=viewthread&tid=4750658&page=1#pid37998259

报纸
fyp198744 发表于 2016-8-23 13:07:56
wwang111 发表于 2016-8-22 17:38
每个name的第一条记录,ord的值设成了0;然后ord+1是一个sum statement,具体楼主可以看一下下面这个帖子6楼 ...
好的,但是我还有一个问题,既然是sum statement,那为什么ord有值的时候就不继续累加了?比如第四行为什么是1而不是4?我试过,即使不by分组,只要有值,它就不会覆盖!

地板
wwang111 发表于 2016-8-23 13:27:31
程序里不是只有ord+1这一个语句,;
到了第四行,if first.name=1的条件就符合了,ord就被重新赋值成了0;
然后,还是第四行,会执行ord+1,从而ord的值就变成了1;
到了第五行,不满足first.name=1,ord不会被重新赋值,而是第四行留下的1,然后执行ord+1,值就变成了2;
以此类推。

7
gaotao0727 发表于 2016-8-23 15:05:36
wwang111 发表于 2016-8-22 16:19
data wanted;
  set test;
  by name value notsorted;
你好,请教一个问题:call missing(p)这个语句为什么除了第二条观测其他都变成缺失的了呢?missing函数不是判断是否缺失的吗?谢谢!

8
wwang111 发表于 2016-8-23 15:11:44
gaotao0727 发表于 2016-8-23 15:05
你好,请教一个问题:call missing(p)这个语句为什么除了第二条观测其他都变成缺失的了呢?missing函数不 ...
这不是missing函数,而是一个call routine;

from SAS HELP:

The CALL MISSING routine assigns an ordinary numeric missing value (.) to each numeric variable in the argument list.

The MISSING function checks whether the argument has a missing value but does not change the value of the argument.

9
gaotao0727 发表于 2016-8-23 15:30:48
wwang111 发表于 2016-8-23 15:11
这不是missing函数,而是一个call routine;

from SAS HELP:
明白了,非常感谢哈~~

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-9 09:00