全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1443 7
2012-02-18
数据集为

data a;
    input stkcd num@@;
    cards;
    1 1 1 2 1 3 1 4 2 1 2 2 2 3 2 4 3 1 3 2 3 3 3 4
    ;
run;

proc print data=a;
run;

如何得到下面的结果

stkcd     num_lag1
1            .
1            1
1            2
1            3
2           .
2            1
2            2
2            3

3          .
3           1
3           2
3           3



说明:要用lag函数,但是要根据stkcd分类操作,就不知道怎么做了,求高手指教!
二维码

扫码加我 拉你入群

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

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

全部回复
2012-2-18 19:12:13
Try the following code.

proc sort data = a;
        by stkcd num;
run;
data b;
        set a;
        by stkcd;
        x = lag(num);
        if first.stkcd then x = .;
run;
二维码

扫码加我 拉你入群

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

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

2012-2-18 19:28:54
maidenhan 发表于 2012-2-18 19:12
Try the following code.

proc sort data = a;
目的已经达到,可是似乎不是分类操作的?
请问first.stkcd是什么意思?
如果要进一步达到
num_lag2
.
.
1
2
.
.
1
2
.
.
1
2
的结果呢?
二维码

扫码加我 拉你入群

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

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

2012-2-18 19:31:42
maidenhan 发表于 2012-2-18 19:12
Try the following code.

proc sort data = a;
first.stkcd已经明白了,
FIRST.variable and LAST.variable
假如是第二个呢?
二维码

扫码加我 拉你入群

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

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

2012-2-18 19:48:44
maidenhan 发表于 2012-2-18 19:12
Try the following code.

proc sort data = a;
我这么实现的。
y=lag(x);
if first.stkcd then y=.;
就可以了,不过不知道有没有好的方法?
二维码

扫码加我 拉你入群

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

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

2012-2-18 23:18:55
lixqji 发表于 2012-2-18 19:31
first.stkcd已经明白了,
FIRST.variable and LAST.variable
假如是第二个呢?
请问,first.variable是什么呀?指针?对于运行过程中的细节,能够说得详细一点吗?多谢lixqji!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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